
widget 작업을 위해 SwiftUI를 사용할 일이 생겼을 때 이슈 하나 있어서 정리 하나 해보겠습니다. 결론부터 말하자면 VStack과 HStack 모두 기본적으로 spacing이 들어가 있습니다. 코드로 예시를 들겠습니다. struct ContentView: View { var body: some View { VStack { Text("Hello, world!") Divider() Text("글자 spacing 테스트") } } } Text, Divider와 Text 사이에 기본적으로 spacing이 애플처럼 보기 좋게 들어가 있습니다. 하지만 작업을 하다보면 자유롭게 padding을 넣어서 간격을 만들일이 생기게 됩니다. 기존 코드에 padding을 넣으면 디자인 시안과 미묘하게 다르게 됩니다. ..

UILabel 을 사용하다 보면 글자가 길어짐에 따라 라인이 추가되는데 한정된 영역에서 글자를 어떻게 처리할 지 고민하게 된다. 그러면서 lineBreakMode가 나왔고 애플에서는 가독성을 위해서 글자를 단어 단위로 잘라서 끝쪽에 애매한 부분은 다음 줄 부터 시작하게 됩니다. 일반적인 상황에서는 상관이 없지만 네이버 시리즈의 제목을 표기하는 곳같이 글자를 단어 단위로 짜르게 되면 영역이 상당히 비어 보이는 느낌을 가지게 됩니다. 그래서 문자 단위로 자르기 위해 label.lineBreakMode = .byCharWrapping 으로 변경을 하게 됩니다. 아쉽게도 .byCharWrapping 는 글자가 짤리는 영역에 … 으로 축소해주고 싶지만.. 이런식으로 끝에 넘어가도 글자가 …으로 축소 되지않습니다...

NSTextAttachment 속성을 이용해서 UILabel 앞에 이미지 붙이기 import UIKit class ViewController: UIViewController { @IBOutlet weak var testLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() // 테스트할 텍스트 생성 let text = "텍스트 앞에 이미지 넣기" // NSAttributedString 으로 변경 let NStext = NSAttributedString(string: text) // attributeString 생성 let attributedString = NSMutableAttributedString(string: "") // UIImage ..

앱을 만들 때 userDefaults에 중요한 값을 저장하게 되는데 UserDefaults.standard.set(true, forKey: "isPopup") 이러한 방식으로 set을 하고 let isPopup: Bool = UserDefaults.standard.bool(forKey: "isPopup") // true 이런 식으로 불러서 값을 사용하게 됩니다. 이런식으로 사용하다보면 UserDefaults를 각각 파일에서 선언해서 사용하게 되면 분산되어 버리기때문에 관리가 힘들게되고 추적이 어려운 이슈가 생기게 됩니다. 위 이슈를 해결하기 위해 모을 수 있는 공간을 만들고 그 장소에 enum 을 선언하고 저장 프로퍼티를 이용해서 관리를 했었습니다. // 예시 입니다. enum Key: String { ..