iPhone / iPad의 UILabel에서 굵게 및 기울임 꼴을 어떻게 설정합니까?


138

UILabeliPhone / iPad 에서 굵게 및 기울임 꼴을 어떻게 설정 합니까? 포럼을 검색했지만 아무런 도움이되지 않았습니다. 누구든지 나를 도울 수 있습니까?


기울임 꼴 글꼴없이 사용자 정의를 사용하는 경우 [이 방법을 시도하십시오.] [1] [1] : stackoverflow.com/questions/21009957/…
Jakehao

답변:


132
sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];

'fontWithName'속성 대신 설정할 수있는 글꼴 이름 목록이 있습니다.


5
더 나은 대답은 @Maksymilian Wojakowski에서 확장 방법 .withTraits와 하나 ()입니다
없음 반환 환불

선생님 선생님 어떻게 설정 텍스트 상자 스타일에 굵은 선언 크기 목적 없음 C
마니 Hitesh

3
고정 글꼴 이름을 사용하고 있기 때문에 문제가됩니다. 이것은 변경 될 수 있으므로 좋은 해결책은 아닙니다. Maksymilian Wojakowski의 답변이 더 우수하고 훨씬 유연합니다.
레이 Wojciechowski

274

서체 이름으로 연주하지 마십시오. 글꼴 설명자를 사용하면 이름이 필요하지 않습니다.

UILabel * label = [[UILabel alloc] init]; // use your label object instead of this
UIFontDescriptor * fontD = [label.font.fontDescriptor
            fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold
                            | UIFontDescriptorTraitItalic];
label.font = [UIFont fontWithDescriptor:fontD size:0];

size:0 '크기 그대로 유지'를 의미

Swift를 사용하여 다음 확장을 시도하십시오.

extension UIFont {

    func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor()
            .fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits(traits))
        return UIFont(descriptor: descriptor, size: 0)
    }

    func boldItalic() -> UIFont {
        return withTraits(.TraitBold, .TraitItalic)
    }

}

그런 다음 다음과 같이 사용할 수 있습니다.

myLabel.font = myLabel.font.boldItalic()

또는 Condensed와 같은 추가 특성을 추가하십시오.

myLabel.font = myLabel.font.withTraits(.TraitCondensed, .TraitBold, .TraitItalic)

스위프트 4 업데이트 :

extension UIFont {
  var bold: UIFont {
    return with(traits: .traitBold)
  } // bold

  var italic: UIFont {
    return with(traits: .traitItalic)
  } // italic

  var boldItalic: UIFont {
    return with(traits: [.traitBold, .traitItalic])
  } // boldItalic


  func with(traits: UIFontDescriptorSymbolicTraits) -> UIFont {
    guard let descriptor = self.fontDescriptor.withSymbolicTraits(traits) else {
      return self
    } // guard

    return UIFont(descriptor: descriptor, size: 0)
  } // with(traits:)
} // extension

다음과 같이 사용하십시오.

myLabel.font = myLabel.font.bold

또는

myLabel.font = myLabel.font.italic

또는

myLabel.font = myLabel.font.with(traits: [ .traitBold, .traitCondensed ])

스위프트 5 업데이트

extension UIFont {
    var bold: UIFont {
        return with(.traitBold)
    }

    var italic: UIFont {
        return with(.traitItalic)
    }

    var boldItalic: UIFont {
        return with([.traitBold, .traitItalic])
    }



    func with(_ traits: UIFontDescriptor.SymbolicTraits...) -> UIFont {
        guard let descriptor = self.fontDescriptor.withSymbolicTraits(UIFontDescriptor.SymbolicTraits(traits).union(self.fontDescriptor.symbolicTraits)) else {
            return self
        }
        return UIFont(descriptor: descriptor, size: 0)
    }

    func without(_ traits: UIFontDescriptor.SymbolicTraits...) -> UIFont {
        guard let descriptor = self.fontDescriptor.withSymbolicTraits(self.fontDescriptor.symbolicTraits.subtracting(UIFontDescriptor.SymbolicTraits(traits))) else {
            return self
        }
        return UIFont(descriptor: descriptor, size: 0)
    }
}

5
이것이 더 많은 표를받지 못한 이유를 모릅니다! 굵은 이탤릭체가없는 글꼴의 경우이 기능이 좋습니다!
Chris Prince

4
아 아마도 이것이 왜 그렇게 인기가 없는지 알 것입니다. iOS7 이상에서만 사용 가능 ...
Chris Prince

3
이것이 NDA에서는 고려되어야하는지 모르겠지만 Xcode6 및 iOS8 GM 시드에서는 iOS7에서는 전혀 없었던 사용자 정의 글꼴에 대해 글꼴이 없습니다.
Chris Prince

@Maksymilian 우리는 여러 레이블에서이 방법을 거부 할 수 있습니다. 예 : uitableview
Majid Bashir

2
이 답변이 도움이 되었기 때문에 간단한 참고 사항입니다. return withTraits(.TraitBold, .TraitCondensed)아마도 return withTraits(.TraitBold, .TraitItalic)함수 이름과 일치해야합니다.
BreadicalMD

103

@Edinator에서 이것에 대해 살펴보십시오 ..

myLabel.font = [UIFont boldSystemFontOfSize:16.0f]
myLabel.font = [UIFont italicSystemFontOfSize:16.0f];

원하는 시간에 위 중 하나를 사용하십시오


1
두 가지 스타일이 작동하지 않습니다. 이 경우 후자는 이탤릭체 스타일이 우선합니다. 답변 감사합니다!
Edi

@ Edinator yups 한 번에 하나만 사용해야한다는 것을 알고 있습니다 ... 내 대답도 편집했습니다!
Sudhanshu

8

글꼴 필드 에서 문자 "T"를 클릭하여 레이블의 글꼴 스타일, 패밀리, 크기를 설정할 수 있습니다 .

라벨 글꼴 설정


그러나 fontWithName : @ "Arial-Light"를 사용하는 것 외에 큰 문제가 있습니다. 스크린 샷에서 다른 가중치를 어떻게 지정합니까? 모든 것이 boldSystemFontSize (of : __)를 불러옵니다. 그러나 누군가가 빛이나 초경량을 원한다면 어떻게해야합니까?
Dave G

6

레이블과 버튼에 굵게 및 기울임 꼴을 모두 적용 해야하는 동일한 문제가 있습니다. 다음 코드를 사용하여이 효과를 얻을 수 있습니다.

myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];

1
나는 당신이 "아리엘"이 아니라 "아날"을 의미한다고 생각합니다. :)
MMMM

Arial에게는 작동하지 않습니다. 그러나 Helvetica-BoldOblique를 위해 노력하고 있습니다. 여기 UIFont 문서를 참조하십시오 iphonedevwiki.net/index.php/UIFont
sudip

1
당신은 "Arial"이 아니라 "HelveticaNeue"를 의미합니다 :)
jpmartineau

맞춤 글꼴을 추가하면 어떻게 되나요?
Majid Bashir

6

iOS 7 시스템 기본 글꼴을 사용하면 시스템 기본 글꼴을 유지하려는 경우 helvetica neue bold를 사용하게됩니다.

    [titleText setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0]];

또는 간단히 호출 할 수 있습니다.

    [titleText setFont:[UIFont boldSystemFontOfSize:16.0]];

6

스위프트 3

굵게:

let bondFont = UIFont.boldSystemFont(ofSize:UIFont.labelFontSize)

이탤릭체:

let italicFont = UIFont.italicSystemFont(ofSize:UIFont.labelFontSize)


3
 btn.titleLabel.font=[UIFont fontWithName:@"Helvetica neue" size:10];
 btn.titleLabel.font =  [UIFont boldSystemFontOfSize:btnPrev.titleLabel.font.pointSize+3];

이것을 사용하여 굵은 레이블 / 버튼 글꼴을 할 수 있습니다


3

특성을 추가하거나 제거 할 수있는 maksymilian wojakowski의 반응을 변형했습니다.

extension UIFont {

    func withTraits(_ traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor
            .withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits).union(self.fontDescriptor.symbolicTraits))
        return UIFont(descriptor: descriptor!, size: 0)
    }
    func withoutTraits(_ traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor
            .withSymbolicTraits(  self.fontDescriptor.symbolicTraits.subtracting(UIFontDescriptorSymbolicTraits(traits)))
        return UIFont(descriptor: descriptor!, size: 0)
    }
    func bold() -> UIFont {
        return withTraits( .traitBold)
    }

    func italic() -> UIFont {
        return withTraits(.traitItalic)
    }

    func noItalic() -> UIFont {
        return withoutTraits(.traitItalic)
    }
    func noBold() -> UIFont {
        return withoutTraits(.traitBold)
    }
}

label.font = label.font.italic().bold()

셀을 재사용 할 때 유용하며 이전 셀의 레이블에 붙인 이탤릭체를 제거하려는 경우


2

최근에 UIFont API의 제한 사항과 해결 방법에 대한 블로그 게시물을 작성했습니다. 여기 에서 볼 수 있습니다

내가 제공 한 코드를 사용하면 원하는 UIFont를 쉽게 얻을 수 있습니다.

UIFont *myFont = [FontResolver fontWithDescription:@"font-family: Helvetica; font-weight: bold; font-style: italic;"];

그리고 다음을 사용하여 UILabel (또는 무엇이든)으로 설정하십시오. myLabel.font = myFont;


2

이 답변에서 이미 언급했듯이 올바른 글꼴 이름 만 있으면 됩니다. 나는 것을 발견 iOSFonts.com가 사용 정확히 이름을 알고위한 가장 유용한 정보를 얻을 수 있습니다.


훌륭한 자원! iOS 기기에서 찾아서보기 좋은 글꼴을 찾은 다음 "fontWithName"을 사용하여 인스턴스를 가져 왔습니다.
Markus Knappen Johansson 2013

2

굵은 체 텍스트 예 :

UILabel *titleBold = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 30)];
UIFont* myBoldFont = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
[titleBold setFont:myBoldFont];

이탤릭체 텍스트 예 :

UILabel *subTitleItalic = [[UILabel alloc] initWithFrame:CGRectMake(10, 35, 200, 30)];
UIFont* myItalicFont = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]];
[subTitleItalic setFont:myItalicFont];

2

@tolbard가 제공하는 답변은 훌륭하고 잘 작동합니다!

나는 단지 한 줄의 코드로 달성 할 수있는 것을 확장하는 것을 느낍니다.

당신이 얻을 수있는 굵은 아니라 기울임 에 동일한 텍스트에 대한 스타일 귀하의 label사용 글꼴 속성을 설정하여 UIFontDescriptor사용하여 아래의 예에서 아래와 같이 스위프트 4.0 :

label.font = UIFont(descriptor: UIFontDescriptor().withSymbolicTraits([.traitBold, .traitItalic])!, size: 12)

다른 옵션은 다음과 같습니다.

traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded

그 상징적 특성이 무엇을 의미하는지에 대한 자세한 정보는? 여기를 방문하십시오


2

신속한 3에 대한 Maksymilian Wojakowski 의 멋진 답변 업데이트

extension UIFont {
    func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont? {
        guard let descriptorL = self.fontDescriptor.withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits)) else{
            return nil
        }
        return UIFont(descriptor: descriptorL, size: 0)
    }

    func boldItalic() -> UIFont? {
        return withTraits(traits: .traitBold, .traitItalic)
    }
}

1

이것은 매우 간단합니다. 코드는 다음과 같습니다.

[yourLabel setFont:[UIFont boldSystemFontOfSize:15.0];

도움이 될 것입니다.


그것은 이탤릭을 설정하지 않습니다.
mattsson

굵게 만 설정됩니다. Italic의 경우 인터페이스 빌더로 사용할 수 있습니다.
Ashu

1

그냥 언급하고 싶어

UIFont.systemFont(ofSize: 16, weight: UIFont.Weight.bold)
UIFont.boldSystemFont(ofSize: 16)

그들은 다른 결과를 가지고 있습니다 ...


0

굵게 표시된 텍스트는 다른 수준에서는 정보 아키텍처 방식으로 간주되므로 한 줄에 굵게 표시되고 규칙적이지 않으므로 두 개의 레이블 / 텍스트보기 (일반 및 굵은 기울임 꼴)로 분할 할 수 있습니다. 그리고 편집기를 사용하여 글꼴 스타일을 선택하십시오.


0

스위프트 (5)

스타일 = BOLD

label.font = UIFont(name:"HelveticaNeue-Bold", size: 15.0)

스타일 = 중간

label.font = UIFont(name:"HelveticaNeue-Medium", size: 15.0)

스타일 = 얇은

label.font = UIFont(name:"HelveticaNeue-Thin", size: 15.0)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.