ฉันมีUIBarButtonItem
ในUIToolbar
ชื่อของฉันเสร็จแล้ว ตอนนี้ฉันต้องการเปลี่ยนแบบอักษรจากค่าเริ่มต้นเป็น"Trebuchet MS"ด้วยตัวหนา ฉันจะทำสิ่งนั้นได้อย่างไร
ฉันมีUIBarButtonItem
ในUIToolbar
ชื่อของฉันเสร็จแล้ว ตอนนี้ฉันต้องการเปลี่ยนแบบอักษรจากค่าเริ่มต้นเป็น"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}"
แน่นอนคุณสามารถเปลี่ยนแบบอักษร & ขนาดเป็นสิ่งที่คุณต้องการ ฉันชอบที่จะใส่รหัสนี้ในAppDelegate.m
ไฟล์ในdidFinishLaunchingWithOptions
ส่วน
แอททริบิวที่มีอยู่ (เพิ่มไปยังNSDictionary
):
NSFontAttributeName
: เปลี่ยนแบบอักษรด้วย UIFont
NSForegroundColorAttributeName
: เปลี่ยนสีด้วย UIColor
NSShadow
: เพิ่มเงา (ดูNSShadow
การอ้างอิงชั้นเรียน)(อัปเดตสำหรับ iOS7 +)
ใน Swift คุณจะทำดังนี้
backButtonItem.setTitleTextAttributes([
NSFontAttributeName : UIFont(name: "Helvetica-Bold", size: 26)!,
NSForegroundColorAttributeName : UIColor.blackColor()],
forState: UIControlState.Normal)
เหล่านี้คือคำตอบที่ดีข้างต้น เพิ่งอัปเดตสำหรับ 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)
รวดเร็ว
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];
การทำเช่นนี้สำหรับบางคนUIBarButtonItems
แต่ไม่ใช่ทั้งหมดฉันแนะนำวิธีต่อไปนี้
UIBarButtonItem
คลาสย่อย ไม่ต้องเพิ่มอะไรเลย - คุณจะใช้มันเป็นคลาสที่กำหนดเองในสตอรี่บอร์ดUIBarButtonItems
เป็นคลาสย่อยของคุณUIBarButtonItem
คลาสย่อยของคุณและเพิ่มบรรทัดต่อไปนี้application:didFinishLaunchingWithOptions:
ในกรณีของฉันฉัน subclassed UIBarButtonItem
เพื่อวัตถุประสงค์ในการ bolding ข้อความเท่านั้น:
[[BoldBarButtonItem appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont boldSystemFontOfSize:18.0], NSFontAttributeName,nil]
forState:UIControlStateNormal];
ในSwift 4คุณสามารถเปลี่ยนแบบอักษรและสีของUIBarButtonItem
โดยการเพิ่มรหัสต่อไปนี้
addTodoBarButton.setTitleTextAttributes(
[
NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Bold", size: 17)!,
NSAttributedStringKey.foregroundColor: UIColor.black
], for: .normal)
นี่เป็นวิธีที่ถูกต้อง: ประกาศ barButtonItem ของคุณ (ในกรณีนี้ rightBarButtonItem) และเพิ่ม setTitleTextAttributes
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Go!", style: .plain, target: self, action: #selector(yourFuncDestination))
หลังจากที่คุณสามารถเพิ่มแอตทริบิวต์ชื่อ
navigationItem.rightBarButtonItem?.setTitleTextAttributes([.font : UIFont.systemFont(ofSize: 18, weight: .bold), .foregroundColor : UIColor.white], for: .normal)
คุณสามารถเปลี่ยนขนาดน้ำหนัก (. หนา,. หนัก,. ปกติ ฯลฯ ) และสีที่คุณต้องการ ... หวังว่าจะช่วย :)
การใช้งาน Swift 5
rightButtonItem.setTitleTextAttributes([
NSAttributedString.Key.font: UIFont(name: "Helvetica-Bold", size: 26.0)!,
NSAttributedString.Key.foregroundColor: UIColor.green],
for: .normal)
สวิฟท์ 3
barButtonName.setTitleTextAttributes( [NSFontAttributeName : UIFont.systemFont(ofSize: 18.0),NSForegroundColorAttributeName : UIColor.white], for: .normal)
ตลอดทั้งแอพ:
if let font = UIFont(name: "AvenirNext-DemiBold", size: 15) {
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName:TOOLBAR_TITLE_COLOR], forState: UIControlState.Normal)
}
UIBarButton
ไม่ได้มีคุณสมบัติที่เกี่ยวข้องกับการเปลี่ยนแบบอักษร แต่คุณสามารถสร้างปุ่มด้วยแบบอักษรที่กำหนดเองแล้วเพิ่มลงใน UIBarButton อาจแก้ไขปัญหาของคุณได้
สมมติว่าคุณต้องการสนับสนุน iOS4 และก่อนหน้านี้ทางออกที่ดีที่สุดของคุณคือการสร้างปุ่มบาร์โดยใช้initWithCustomView:
วิธีการและให้มุมมองของคุณเองซึ่งอาจเป็น UIButton ที่คุณสามารถปรับแต่งแบบอักษรได้อย่างง่ายดาย
คุณยังสามารถลาก UIButton ไปยังแถบเครื่องมือหรือแถบนำทางใน Interface Builder ได้หากคุณต้องการสร้างปุ่มด้วยการลากแล้วปล่อยแทนที่จะเป็นแบบโปรแกรม
น่าเสียดายที่นี่หมายถึงการสร้างภาพพื้นหลังของปุ่มด้วยตัวคุณเอง ไม่มีวิธีปรับแต่งแบบอักษรของ UIBarButtonItem มาตรฐานก่อน iOS5
คุณสามารถสร้างแบบกำหนดเองโดยทางUIView
โปรแกรม:
UIView *buttonItemView = [[UIView alloc] initWithFrame:buttonFrame];
จากนั้นเพิ่มรูปภาพป้ายกำกับหรืออะไรก็ตามที่คุณชอบในมุมมองที่กำหนดเอง:
[buttonItemView addSubview:customImage];
[buttonItemView addSubview:customLabel];
...
UIBarButtomItem
ตอนนี้ใส่ไว้ในของคุณ
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonItemView];
และในที่สุดก็เพิ่ม barButtonItem ให้กับแถบนำทางของคุณ
เพื่อความสมบูรณ์ฉันต้องการเพิ่มวิธีนี้ยังคงใช้ใน Objective-C ในปี 2019 :)
_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];