Saya memiliki UIBarButtonItem
di SelesaiUIToolbar
berjudul saya . Sekarang saya ingin mengubah font dari default menjadi "Trebuchet MS" dengan Bold. Bagaimana saya bisa melakukan itu?
Saya memiliki UIBarButtonItem
di SelesaiUIToolbar
berjudul saya . Sekarang saya ingin mengubah font dari default menjadi "Trebuchet MS" dengan Bold. Bagaimana saya bisa melakukan itu?
Jawaban:
Karena UIBarButtonItem mewarisi dari UIBarItem, Anda dapat mencoba
- (void)setTitleTextAttributes:(NSDictionary *)attributes
forState:(UIControlState)state
tapi ini hanya untuk iOS5. Untuk iOS 3/4, Anda harus menggunakan tampilan khusus.
Lebih tepatnya, ini bisa dilakukan seperti di bawah ini
[buttonItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Helvetica-Bold" size:26.0], NSFontAttributeName,
[UIColor greenColor], NSForegroundColorAttributeName,
nil]
forState:UIControlStateNormal];
Atau dengan sintaks literal objek:
[buttonItem setTitleTextAttributes:@{
NSFontAttributeName: [UIFont fontWithName:@"Helvetica-Bold" size:26.0],
NSForegroundColorAttributeName: [UIColor greenColor]
} forState:UIControlStateNormal];
Untuk kenyamanan, inilah implementasi Swift:
buttonItem.setTitleTextAttributes([
NSAttributedStringKey.font: UIFont(name: "Helvetica-Bold", size: 26.0)!,
NSAttributedStringKey.foregroundColor: UIColor.green],
for: .normal)
Bagi mereka yang tertarik menggunakan UIAppearance
gaya UIBarButtonItem
font mereka di seluruh aplikasi, dapat dilakukan dengan menggunakan baris kode ini:
Sasaran C:
NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light" size:12.0], NSForegroundColorAttributeName: [UIColor whiteColor]};
[[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];
Swift 2.3:
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSForegroundColorAttributeName : UIColor.white
],
for: .normal)
Cepat 3
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSForegroundColorAttributeName : UIColor.white,
], for: .normal)
Cepat 4
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSAttributedStringKey.font : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSAttributedStringKey.foregroundColor : UIColor.white,
], for: .normal)
Atau untuk UIBarButtonItem tunggal (tidak untuk semua lebar aplikasi), jika Anda memiliki font khusus untuk satu tombol khususnya:
Cepat 3
let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
NSFontAttributeName : UIFont(name: "FontAwesome", size: 26)!,
NSForegroundColorAttributeName : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"
Cepat 4
let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
NSAttributedStringKey.font : UIFont(name: "FontAwesome", size: 26)!,
NSAttributedStringKey.foregroundColor : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"
Tentu saja, Anda dapat mengubah font & ukuran ke apa pun yang Anda suka. Saya lebih suka meletakkan kode ini di AppDelegate.m
file di didFinishLaunchingWithOptions
bagian.
Atribut yang tersedia (tambahkan saja ke NSDictionary
):
NSFontAttributeName
: Ubah font dengan a UIFont
NSForegroundColorAttributeName
: Ubah warna dengan a UIColor
NSShadow
: Tambahkan bayangan drop (lihat NSShadow
referensi kelas)(Diperbarui untuk iOS7 +)
Di Swift Anda akan melakukan ini sebagai berikut:
backButtonItem.setTitleTextAttributes([
NSFontAttributeName : UIFont(name: "Helvetica-Bold", size: 26)!,
NSForegroundColorAttributeName : UIColor.blackColor()],
forState: UIControlState.Normal)
Ini adalah jawaban yang bagus di atas. Hanya memperbarui untuk 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)
cepat
barbutton.setTitleTextAttributes([
NSFontAttributeName : UIFont.systemFontOfSize(18.0),
NSForegroundColorAttributeName : UIColor.redColor(),NSBackgroundColorAttributeName:UIColor.blackColor()],
forState: UIControlState.Normal)
Objektif-C
[ barbutton setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Helvetica-Bold" size:20.0], NSFontAttributeName,
[UIColor redColor], NSForegroundColorAttributeName,[UIColor blackColor],NSBackgroundColorAttributeName,
nil]
forState:UIControlStateNormal];
Untuk melakukan ini untuk beberapa UIBarButtonItems
tetapi tidak semua saya merekomendasikan pendekatan berikut.
UIBarButtonItem
subkelas. Jangan menambahkan apa pun ke dalamnya - Anda hanya akan menggunakannya sebagai kelas khusus di storyboard dan untuk proksi penampilannya ...UIBarButtonItems
ke subkelas AndaUIBarButtonItem
subclass Anda dan tambahkan baris berikut keapplication:didFinishLaunchingWithOptions:
Dalam kasus saya, saya membuat subklas UIBarButtonItem
dengan tujuan untuk menebalkan teks:
[[BoldBarButtonItem appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont boldSystemFontOfSize:18.0], NSFontAttributeName,nil]
forState:UIControlStateNormal];
Di Swift 4 , Anda dapat mengubah font dan warna UIBarButtonItem
dengan menambahkan kode berikut.
addTodoBarButton.setTitleTextAttributes(
[
NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Bold", size: 17)!,
NSAttributedStringKey.foregroundColor: UIColor.black
], for: .normal)
Ini adalah cara yang tepat: nyatakan barButtonItem Anda (dalam hal ini rightBarButtonItem) dan tambahkan setTitleTextAttributes.
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Go!", style: .plain, target: self, action: #selector(yourFuncDestination))
setelah itu kamu bisa menambahkan atribut title
navigationItem.rightBarButtonItem?.setTitleTextAttributes([.font : UIFont.systemFont(ofSize: 18, weight: .bold), .foregroundColor : UIColor.white], for: .normal)
Anda dapat mengubah ukuran, berat (.bold, .heavy,. regular, dll.) dan warna yang Anda sukai ... Semoga bantuan ini :)
Implementasi Swift 5
rightButtonItem.setTitleTextAttributes([
NSAttributedString.Key.font: UIFont(name: "Helvetica-Bold", size: 26.0)!,
NSAttributedString.Key.foregroundColor: UIColor.green],
for: .normal)
Seluruh Aplikasi:
if let font = UIFont(name: "AvenirNext-DemiBold", size: 15) {
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName:TOOLBAR_TITLE_COLOR], forState: UIControlState.Normal)
}
Dengan asumsi Anda ingin mendukung iOS4 dan sebelumnya, taruhan terbaik Anda adalah membuat tombol bilah menggunakan initWithCustomView:
metode dan menyediakan tampilan Anda sendiri yang bisa berupa UIButton di mana Anda dapat dengan mudah menyesuaikan font.
Anda juga dapat menyeret UIButton ke bilah alat atau bilah navigasi di Interface Builder jika Anda ingin membuat tombol dengan drag-and-drop alih-alih secara terprogram.
Sayangnya ini berarti membuat gambar latar tombol sendiri. Tidak ada cara untuk menyesuaikan font UIBarButtonItem standar sebelum iOS5.
Anda dapat membuat kustom secara UIView
terprogram:
UIView *buttonItemView = [[UIView alloc] initWithFrame:buttonFrame];
Kemudian tambahkan gambar, label, atau apa pun yang Anda suka ke tampilan kustom Anda:
[buttonItemView addSubview:customImage];
[buttonItemView addSubview:customLabel];
...
Sekarang masukkan ke dalam UIBarButtomItem
.
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonItemView];
Dan akhirnya tambahkan barButtonItem ke bilah navigasi Anda.
Untuk penyelesaian saya ingin menambahkan metode ini, masih digunakan di Objective-C pada 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];