วิธีการที่ทันสมัย
วิธีที่ทันสมัยสำหรับตัวควบคุมการนำทางทั้งหมด ... ทำสิ่งนี้เพียงครั้งเดียวเมื่อมุมมองรูทของตัวควบคุมการนำทางของคุณถูกโหลด
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor yellowColor]}];
อย่างไรก็ตามสิ่งนี้ดูเหมือนจะไม่มีผลในมุมมองที่ตามมา
วิธีการคลาสสิก
วิธีเก่าต่อตัวควบคุมมุมมอง (ค่าคงที่เหล่านี้ใช้สำหรับ iOS 6 แต่ถ้าต้องการทำต่อตัวควบคุมมุมมองบนลักษณะที่ปรากฏของ iOS 7 คุณจะต้องการแนวทางเดียวกัน แต่มีค่าคงที่ต่างกัน):
คุณจำเป็นต้องใช้UILabel
เป็นของtitleView
navigationItem
ฉลากควร:
- มีสีพื้นหลังที่ชัดเจน (
label.backgroundColor = [UIColor clearColor]
)
- ใช้แบบอักษรระบบ 20 พอยต์ตัวหนา (
label.font = [UIFont boldSystemFontOfSize: 20.0f]
)
- มีเงาดำ 50% alpha (
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
)
- คุณจะต้องตั้งค่าการจัดแนวข้อความเป็นกึ่งกลางเช่นกัน (
label.textAlignment = NSTextAlignmentCenter
( UITextAlignmentCenter
สำหรับ SDK ที่เก่ากว่า)
ตั้งค่าสีข้อความของฉลากให้เป็นสีที่กำหนดเองที่คุณต้องการ คุณต้องการสีที่ไม่ทำให้ข้อความกลมกลืนซึ่งจะอ่านยาก
ฉันทำสิ่งนี้ผ่านการลองผิดลองถูก แต่ค่านิยมที่ฉันได้รับมานั้นง่ายเกินไปสำหรับพวกเขาที่จะไม่เลือกตามที่ Apple เลือก :)
หากคุณต้องการตรวจสอบนี้วางโค้ดนี้ลงinitWithNibName:bundle:
ในPageThreeViewController.m
ของแอปเปิ้ล NavBar ตัวอย่าง สิ่งนี้จะแทนที่ข้อความด้วยป้ายสีเหลือง สิ่งนี้ควรแยกไม่ออกจากต้นฉบับที่ผลิตโดยรหัสของ Apple ยกเว้นสี
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
// this will appear as the title in the navigation bar
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:20.0];
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
label.textAlignment = NSTextAlignmentCenter;
// ^-Use UITextAlignmentCenter for older SDKs.
label.textColor = [UIColor yellowColor]; // change this color
self.navigationItem.titleView = label;
label.text = NSLocalizedString(@"PageThreeTitle", @"");
[label sizeToFit];
}
return self;
}
แก้ไข: โปรดอ่านคำตอบของ Erik B ด้านล่าง รหัสของฉันแสดงเอฟเฟกต์ แต่รหัสของเขานำเสนอวิธีที่ง่ายกว่าในการนำตัวควบคุมมุมมองที่มีอยู่มาใช้