티스토리 뷰
구조체(struct) 및 확장(extension) 기능을 이용하여 코드를 간결하게 작성하는 방법을 나름대로 정리해보려고 합니다.
아래는 구조체를 이용하여 폰트의 종류나 크기로 예를 들어 코드를 작성해 본 것입니다.
import UIKit
struct Styles {
private init(){}
struct Fonts {
private init(){}
static let light = UIFont(name: "NanumSquareL", size: 12.0)!
static let regular = UIFont(name: "NanumSquareR", size: 12.0)!
static let bold = UIFont(name: "NanumSquareB", size: 12.0)!
static let extraBold = UIFont(name: "NanumSquareEB", size: 12.0)!
static func light(size: CGFloat) -> UIFont {
return UIFont(name: "NanumSquareL", size: size)!
}
static func regular(size: CGFloat) -> UIFont {
return UIFont(name: "NanumSquareR", size: size)!
}
static func bold(size: CGFloat) -> UIFont {
return UIFont(name: "NanumSquareB", size: size)!
}
static func extraBold(size: CGFloat) -> UIFont {
return UIFont(name: "NanumSquareEB", size: size)!
}
struct Size {
private init(){}
static let small: CGFloat = 12
static let regular: CGFloat = 16
static let large: CGFloat = 24
}
}
}
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Configure View
var label = UILabel()
label.font = Styles.Fonts.regular(size: Styles.Fonts.Size.regular)
}
}
확장을 통해 간결하게 작성하는 법은 UIColor를 예로 들어 코드를 작성해 보았습니다.
import UIKit
extension UIColor {
static let base = UIColor(red:1.00, green:0.20, blue:0.70, alpha:1.00)
static let text = UIColor(red:0.30, green:0.35, blue:0.30, alpha:1.00)
static let defaultBackground = UIColor(red:0.60, green:0.80, blue:0.90, alpha:1.00)
static let button = UIColor(red: 1.00, green: 1.00, blue: 1.00, alpha: 1.00)
}
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Configure View
self.view.backgroundColor = .base
}
}
위와 같은 구성으로 앱의 스타일을 적용한다며 추후 변경사항이 있을 때, 간단하고 일관되게 수정가능할 것입니다.
자신이 원하는 방식으로 조금씩 코드를 개선해가면 좀 더 성장할 수 있지 않을까 생각합니다.
'Swift' 카테고리의 다른 글
mutating 키워드에 대해 알아보기 (0) | 2018.06.11 |
---|---|
inout 파라미터 알아보기 (0) | 2018.06.08 |
URLSession 쿠키 삭제하기 (0) | 2018.05.23 |
navigationBar 하단 border 핸들링. (0) | 2018.04.06 |
guard문 알아보기. (0) | 2018.04.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- RECORDING
- Cleancode
- HLS
- pagingView
- permission error
- BaseViewController
- xib
- Video
- Realm
- UIBarButtonItem
- m3u8
- database
- UIControl
- AVKit
- carousel
- customAlertView
- ssh
- TDD
- http live streaming
- Coordinator
- NIB
- IOS
- AssociatedObject
- CollectionView
- Design Pattern
- Swift
- Closure
- AVFoundation
- testing
- UIButton
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함