반응형
폰트를 설정 하는 방법에 대해서 알아볼게요
위에 글씨처럼 표현하려면 어떻게 해야하나요??
Label(가나다라) + Label(마바사)
.
.
.
이렇게 해도되긴하지만 오토레이아웃을 잡기가 까다로울수도있고
2개를 만들어야한다는것도 불편해요!!
String의 속성을 이용해서 원하는 위치의 글자의 폰트만 바꿔볼거에요!!
가나다라/마바사
저는 여기서 마바사의 폰트만 바꾸면 되겠죠
기본으로 적용할 폰트를 만들어줘요
let attributedString = NSMutableAttributedString(string: testLabel.text!, attributes: [
.font: UIFont.systemFont(ofSize: 15, weight: .bold),
.foregroundColor: UIColor(white: 0.0, alpha: 1.0),
.kern: -0.01
]
아래에서 필요한 옵션들만 추가하면되요!!
font - 폰트를 적용해주고
foregroundColor - 글자색을 설정해주고
kern - 자간을 설정해줬어요
이제 기본폰트가아닌 특별하게 바꿀 부분의 폰트를 만들어줄거에요
attributedString.addAttribute(.font, value: UIFont.systemFont(ofSize: 20, weight: .medium), range: (testLabel.text! as NSString).range(of: "마바사"))
attributedString.addAttribute(.foregroundColor, value: #colorLiteral(red: 0.2196078431, green: 0.1333333333, blue: 0.4862745098, alpha: 1), range: (testLabel.text! as NSString).range(of: "마바사"))
self.testLabel.attributedText = attributedString
addAttribute( 바꿀옵션, 값, 해당위치 )
에 맞게 넣어주고
해당위치는
바꾸려는 text를 NSString으로 변환후
range(of: )을 이용해서
해당 글자가 있는 위치를 추출해서 간편하게 쓸거에요
저같은 경우는 마바사를 바꿀거라서 "마바사"를 넣어줬어요
마지막으로 label의 속성에 적용해주면 끝이에요!!
아래는 전체코드에요
class ViewController: UIViewController {
@IBOutlet weak var testLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let attributedString = NSMutableAttributedString(string: testLabel.text!, attributes: [
.font: UIFont.systemFont(ofSize: 15, weight: .bold),
.foregroundColor: UIColor(white: 0.0, alpha: 1.0),
.kern: -0.01
])
attributedString.addAttribute(.font, value: UIFont.systemFont(ofSize: 20, weight: .medium), range: (testLabel.text! as NSString).range(of: "마바사"))
attributedString.addAttribute(.foregroundColor, value: #colorLiteral(red: 0.2196078431, green: 0.1333333333, blue: 0.4862745098, alpha: 1), range: (testLabel.text! as NSString).range(of: "마바사"))
self.testLabel.attributedText = attributedString
}
}
[TIP]
시스템 글꼴이 아니라 다른 글꼴일경우 간단하게 폰트를 관리 할 수 있어요
다른 더좋은 방법들도 많이있을거에요!!
참고해서 쓰세요ㅎㅎ..
우선 폰트가 스토리보드에 있는것과 표시되는 값이 다를수있어요
폰트이름부터 확인해봐야해요
for family: String in UIFont.familyNames
{
print(“\(family)”)
for names: String in UIFont.fontNames(forFamilyName: family)
{
print("== \(names)")
}
}
정확한 이름을 확인후
아래처럼 관리해서 사용했어요
enum FontType {
case regular, bold, medium, light, semibold
}
extension UIFont {
static func fontWithName(type: FontType, size: CGFloat) -> UIFont {
var fontName = ""
switch type {
case .regular:
fontName = "AppleSDGothicNeo-Regular"
case .light:
fontName = "AppleSDGothicNeo-Light"
case .medium:
fontName = "AppleSDGothicNeo-Medium"
case .semibold:
fontName = "AppleSDGothicNeo-SemiBold"
case .bold:
fontName = "AppleSDGothicNeo-Bold"
}
return UIFont(name: fontName, size: size) ?? UIFont.systemFont(ofSize: size)
}
}
반응형
'iyOmSd > Title: Swift' 카테고리의 다른 글
[Swift] - MultiPart통신 (멀티파트 이미지업로드) (2) | 2020.04.11 |
---|---|
[Swift] XML 파싱 (0) | 2020.04.03 |
[Swift] APNS - Apple Push Notification (1) | 2020.02.28 |
[Swift] Socket.IO를 이용한 소켓통신 채팅앱 만들어보기 (3/3) (4) | 2019.12.17 |
[Swift] Socket.IO를 이용한 소켓통신 채팅앱 만들어보기 (2/3) (8) | 2019.12.17 |