UIBarButtonItem의 글꼴 변경

나는이 UIBarButtonItem내가에 UIToolbar제목 완료 . 이제 Bold 를 사용하여 글꼴을 기본값에서 "Trebuchet MS" 로 변경하고 싶습니다 . 어떻게해야합니까?
UIBarButtonItem은 UIBarItem에서 상속되므로 시도해 볼 수 있습니다
- (void)setTitleTextAttributes:(NSDictionary *)attributes
forState:(UIControlState)state
그러나 이것은 iOS5 전용입니다. iOS 3/4의 경우 사용자 정의보기를 사용해야합니다.
정확히 말하면, 다음과 같이 할 수 있습니다
[buttonItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Helvetica-Bold" size:26.0], NSFontAttributeName,
[UIColor greenColor], NSForegroundColorAttributeName,
nil]
forState:UIControlStateNormal];
또는 객체 리터럴 구문으로 :
[buttonItem setTitleTextAttributes:@{
NSFontAttributeName: [UIFont fontWithName:@"Helvetica-Bold" size:26.0],
NSForegroundColorAttributeName: [UIColor greenColor]
} forState:UIControlStateNormal];
편의상 Swift 구현은 다음과 같습니다.
buttonItem.setTitleTextAttributes([
NSAttributedStringKey.font: UIFont(name: "Helvetica-Bold", size: 26.0)!,
NSAttributedStringKey.foregroundColor: UIColor.green],
for: .normal)
앱 전체에서 글꼴의 UIAppearance스타일을 지정 하는 데 관심 UIBarButtonItem이있는 사용자는 다음 코드 행을 사용하여 수행 할 수 있습니다.
목표 C :
NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light" size:12.0], NSForegroundColorAttributeName: [UIColor whiteColor]};
[[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];
스위프트 2.3 :
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSForegroundColorAttributeName : UIColor.white
],
for: .normal)
스위프트 3
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSForegroundColorAttributeName : UIColor.white,
], for: .normal)
스위프트 4
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSAttributedStringKey.font : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSAttributedStringKey.foregroundColor : UIColor.white,
], for: .normal)
또는 특히 하나의 버튼에 대한 사용자 정의 글꼴이있는 경우 단일 UIBarButtonItem (모든 앱 범위에 해당하는 것은 아님)의 경우 :
스위프트 3
let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
NSFontAttributeName : UIFont(name: "FontAwesome", size: 26)!,
NSForegroundColorAttributeName : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"
스위프트 4
let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
NSAttributedStringKey.font : UIFont(name: "FontAwesome", size: 26)!,
NSAttributedStringKey.foregroundColor : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"
Of course, you can change the font & size to whatever you'd like. I prefer to put this code in the AppDelegate.m file in the didFinishLaunchingWithOptions section.
Available attributes (just add them to the NSDictionary):
NSFontAttributeName: Change font with aUIFontNSForegroundColorAttributeName: Change color with aUIColorNSShadow: Add a drop shadow (seeNSShadowclass reference)
(Updated for iOS7+)
In Swift you would do this as followed:
backButtonItem.setTitleTextAttributes([
NSFontAttributeName : UIFont(name: "Helvetica-Bold", size: 26)!,
NSForegroundColorAttributeName : UIColor.blackColor()],
forState: UIControlState.Normal)
These are great answers above. Just updating for iOS7:
NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Thin" size:18.0] , NSForegroundColorAttributeName: [UIColor whiteColor]};
[[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];
Swift3
buttonName.setAttributedTitle([
NSFontAttributeName : UIFont.systemFontOfSize(18.0),
NSForegroundColorAttributeName : UIColor.red,NSBackgroundColorAttributeName:UIColor.black],
forState: UIControlState.Normal)
swift
barbutton.setTitleTextAttributes([
NSFontAttributeName : UIFont.systemFontOfSize(18.0),
NSForegroundColorAttributeName : UIColor.redColor(),NSBackgroundColorAttributeName:UIColor.blackColor()],
forState: UIControlState.Normal)
Objective-C
[ barbutton setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Helvetica-Bold" size:20.0], NSFontAttributeName,
[UIColor redColor], NSForegroundColorAttributeName,[UIColor blackColor],NSBackgroundColorAttributeName,
nil]
forState:UIControlStateNormal];
In Swift 4, you can change the font and colour of UIBarButtonItem by adding the following code.
addTodoBarButton.setTitleTextAttributes(
[
NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Bold", size: 17)!,
NSAttributedStringKey.foregroundColor: UIColor.black
], for: .normal)
To do this for some UIBarButtonItems but not all I recommend the following approach.
- Create a
UIBarButtonItemsubclass. Don't add anything to it - you will only use it as a custom class in the storyboard and for its appearance proxy... - In your storyboard, change the custom class for all desired
UIBarButtonItemsto your subclass - In your AppDelegate import your
UIBarButtonItemsubclass and add the following line toapplication:didFinishLaunchingWithOptions:
In my case I subclassed UIBarButtonItem for the sole purpose of bolding the text:
[[BoldBarButtonItem appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont boldSystemFontOfSize:18.0], NSFontAttributeName,nil]
forState:UIControlStateNormal];
swift 3
barButtonName.setTitleTextAttributes( [NSFontAttributeName : UIFont.systemFont(ofSize: 18.0),NSForegroundColorAttributeName : UIColor.white], for: .normal)
This is the right way: declare your barButtonItem (in this case rightBarButtonItem) and add it setTitleTextAttributes.
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Go!", style: .plain, target: self, action: #selector(yourFuncDestination))
after you can add title attributes
navigationItem.rightBarButtonItem?.setTitleTextAttributes([.font : UIFont.systemFont(ofSize: 18, weight: .bold), .foregroundColor : UIColor.white], for: .normal)
you can change the size, the weight (.bold, .heavy, .regular etc.) and the color how you prefer... Hope this help :)
Throughout App:
if let font = UIFont(name: "AvenirNext-DemiBold", size: 15) {
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName:TOOLBAR_TITLE_COLOR], forState: UIControlState.Normal)
}
UIBarButton haven't property related to change the font. But you can create a button with custom font and then add into UIBarButton. It May be solved your problem
Assuming you want to support iOS4 and earlier, your best bet is to create a bar button using the initWithCustomView: method and supply your own view which could be something like a UIButton where you can easily customise the font.
You can also drag a UIButton onto a toolbar or navigation bar in Interface Builder if you want to create the button with drag-and-drop instead of programmatically.
Unfortunately this means creating the button background image yourself. There's no way to customise the font of a standard UIBarButtonItem prior to iOS5.
You can create a custom UIView programmatically:
UIView *buttonItemView = [[UIView alloc] initWithFrame:buttonFrame];
Then add images, labels or whatever you like to your custom view:
[buttonItemView addSubview:customImage];
[buttonItemView addSubview:customLabel];
...
Now put it in your UIBarButtomItem.
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonItemView];
And finally add barButtonItem to you navigation bar.
완료를 위해 2019 년 Objective-C에서 여전히 사용되는이 방법을 추가하고 싶습니다. :)
_titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
_titleLabel.text = _titleBarButtonItem.title;
_titleLabel.textColor = UIColor.whiteColor;
_titleLabel.font = [UtilityMethods appFontProDisplayBold:26.0];
[_titleLabel sizeToFit];
UIBarButtonItem *titleLabelItem = [[UIBarButtonItem alloc] initWithCustomView:_titleLabel];
참고 URL : https://stackoverflow.com/questions/8849913/change-the-font-of-a-uibarbuttonitem
'Programming' 카테고리의 다른 글
| ASP.NET MVC 404 오류 처리 (0) | 2020.07.01 |
|---|---|
| SD 카드에서 파일을 삭제하는 방법? (0) | 2020.07.01 |
| 오른쪽에 안드로이드 확인란을 표시하는 방법은 무엇입니까? (0) | 2020.07.01 |
| ViewPager를 사용하여 Google Maps V2를 조각에 배치하는 방법 (0) | 2020.07.01 |
| 보기가 나타나기 전에 iPhone에서 UITableView의 맨 아래로 스크롤하는 방법 (0) | 2020.07.01 |