การปรับแต่ง UIBarButtonItems ในส่วนต่างๆ ของแอพพลิเคชั่น (ภาพพื้นหลังและรูปร่าง)

ฉันต้องการเปลี่ยนภาพพื้นหลังของ UIBarButtonItems ของฉัน ในมุมมองรูท ฉันต้องการให้มันเป็นภาพพื้นหลังบางอย่าง (แต่ยังคงเป็นปุ่มโค้งมน) ในแถบนำทาง แต่ในมุมมองถัดไป ฉันมี UIToolBar ที่ฉันต้องการให้มันมีพื้นหลังที่แตกต่างกันอีกครั้ง

ฉันใช้ [[UIBarButtonItem] appearance] ในผู้รับมอบสิทธิ์แอปเพื่อเปลี่ยนแปลงทั้งหมด แต่ตอนนี้ฉันรู้แล้วว่าสำหรับบางคนฉันต้องการสไตล์หนึ่งและสำหรับอีกสไตล์หนึ่ง

ที่สำคัญกว่านั้นคือฉันอยากจะเปลี่ยนไม่เพียงแค่ภาพพื้นหลังเท่านั้น แต่ยังต้องเปลี่ยนรูปร่างอีกด้วย สำหรับหนึ่งใน UIBarButtonItems ของ UIToolBar ฉันต้องการให้มันอยู่ในรูปของปุ่มย้อนกลับในแถบนำทาง ฉันจะบรรลุรูปลักษณ์นี้ได้อย่างไร?

ฉันสามารถบรรลุทั้งสองสิ่งนี้ด้วยวิธีการที่ระบุไว้ที่นี่ได้หรือไม่

โดยพื้นฐาน: ฉันจะสร้าง UIBarButtonItems แบบกำหนดเองทั่วทั้งแอปได้อย่างไร และให้บางส่วนมีรูปร่างต่างกันได้อย่างไร


person Doug Smith    schedule 29.04.2013    source แหล่งที่มา


คำตอบ (2)


หากคุณต้องการให้ปุ่มดูแตกต่างกันในตัวควบคุมมุมมองที่แตกต่างกัน คุณควรตั้งค่าปุ่มเหล่านั้นภายในตัวควบคุมมุมมอง ไม่ใช่ในผู้รับมอบสิทธิ์ เพิ่มโค้ดในวิธี init หรือวิธี viewWillAppear: เพื่อปรับแต่งปุ่ม หากคุณกำลังปรับแต่ง UIToolbar รายการให้ใช้โค้ดที่คล้ายกับ ลิงก์ที่คุณให้ หากเป็นแถบนำทาง ให้ทำดังนี้:

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
//Customise button with background etc that you want

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationItem.leftBarButtonItem = item;
//Release item if you're not using ARC
person Ander    schedule 29.04.2013

คุณสามารถใช้เมธอด 'appearanceWhenContainedIn' จาก UIAppearance Protocol http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAppearance_Protocol/Reference/Reference.html

ดังนั้นสำหรับ Toolbar คุณจะใช้: [UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil]

และสำหรับ NavBar: [UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]

person mmackh    schedule 29.04.2013