Menyesuaikan UIBarButtonItems di berbagai bagian aplikasi (gambar dan bentuk latar belakang)

Saya ingin mengubah gambar latar belakang UIBarButtonItems saya. Dalam tampilan root, saya ingin mereka menjadi gambar latar belakang tertentu (tetapi masih tombol bulat-persegi) di bilah navigasi, tetapi pada tampilan berikutnya, saya memiliki UIToolBar di mana saya ingin memiliki latar belakang yang berbeda lagi.

Saya menggunakan [[UIBarButtonItem] appearance] di delegasi aplikasi saya untuk mengubah semuanya, tapi sekarang saya menyadari untuk beberapa saya menginginkannya dengan satu gaya dan untuk yang lain lagi.

Lebih penting lagi, saya ingin mengubah tidak hanya gambar latar belakang, tetapi juga bentuknya. Untuk salah satu UIBarButtonItems UIToolBar, saya ingin berbentuk tombol kembali di bilah navigasi. Bagaimana cara mendapatkan tampilan ini?

Bisakah saya mencapai kedua hal ini dengan metode yang dijelaskan di sini?

Pada dasarnya: Bagaimana cara membuat UIBarButtonItems khusus di seluruh aplikasi, dan memiliki beberapa dengan bentuk berbeda?


person Doug Smith    schedule 29.04.2013    source sumber


Jawaban (2)


Jika Anda ingin tombol terlihat berbeda di pengontrol tampilan yang berbeda, Anda harus mengaturnya di dalam pengontrol tampilan, bukan di delegasi. Tambahkan kode dalam metode init atau metode viewWillAppear: untuk menyesuaikan tombol. Jika Anda menyesuaikan UIToolbar item, gunakan kode yang mirip dengan tautan yang Anda berikan. Jika itu untuk bilah navigasi, lakukan sesuatu seperti ini:

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

Anda dapat menggunakan metode 'appearanceWhenContainedIn' dari Protokol UIAppearance http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAppearance_Protocol/Reference/Reference.html

Jadi untuk Toolbar, Anda akan menggunakan: [UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil]

Dan untuk NavBar: [UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]

person mmackh    schedule 29.04.2013