목록스위프트 (54)
study record
// 먼저 행간 조절 스타일 설정 let style = NSMutableParagraphStyle() style.lineSpacing = 10 let attributedString = NSMutableAttributedString(string: textView.text) // 자간 조절 설정 attributedString.addAttribute(NSAttributedString.Key.kern, value: CGFloat(2.0), range: NSRange(location: 0, length: attributedString.length)) // 행간 스타일 추가 attributedString.addAttribute(NSAttributedString.Key.paragraphStyle, value: sty..
rx를 활용해서 네비게이션을 하려는 과정에서 네비게이션 컨트롤러를 활용하는 것이 잘 작동하지 않았다. (코드로 UI를 구성 중이다.) 이 블로그를 참고하여 해결하였다. https://iamcho2.github.io/2021/03/28/navigation-controller-initial-setting SceneDelegate에 var window: UIWindow? var navigationController: UINavigationController? func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { // Use this method..
@IBDesinable 속성을 사용하면 인터페이스 빌더 수행을 라이브로 업데이트시킬 수 있다. IBDesinable은 UIView 클래스에서 잘 정의되기 위해 프레임을 필요로 한다. https://zeddios.tistory.com/270 이 블로그를 참고하면 IBInspectable과 IBDesinable 에 대한 이해도를 높일 수 있다. UIView를 활용할 때 테두리에만 디자인을 추가하고자 하는 경우가 생길 수 있다. 이 때의 borderWidth, borderColor를 지정하는 방법에서 두 가지를 사용한다. borderWidth 테두리 넓이를 지정하기 위해 새로운 cocoaTouch 파일을 만들고 View 에 할당한다. 이 코코아 터치 파일에서 @IBInspectable 을 활용하면 set연산을..
*이 글은 책 “스위프트 프로그래밍"을 읽고 작성한 글입니다. 반환 타입에 불명확 타입을 사용하면 반환할 타입의 정확한 타입을 알려주지 않은 채로 반환하겠다는 것을 의미한다. 프로퍼티나 서브스크립트의 선언 혹은 함수의 반환 타입 위치에 프로토콜을 쓰면서 앞에 some을 붙이며나 ‘이 프로토콜을 준수하는 어떤 타입 중에 하나일 것은 분명하다'는 뜻이다. 제네릭은 정의해 줄 때 정확히 어떤 타입이 들어올지 모르는 상태로 플레이스 홀더를 만들어준다. 불명확 타입은 반대로 외부에서는 어떤 타입이 나에게 반환될지 모른다. 제네릭은 외부에서 타입을 지정해 주는 것이고, 불명확 타입은 내부에서 타입을 정해서 내보내게 되는데 밖에서는 정확히 어떤 타입인지는 몰라도 쓸 수 있는 것이다. 따라서 ‘역제네릭 타입'이라고 표..