Tôi có một UIBarButtonItem
trong UIToolbar
tiêu đề Xong của tôi . Bây giờ tôi muốn thay đổi phông chữ từ mặc định thành "Trebuchet MS" bằng Bold. Làm thế nào tôi có thể làm điều đó?
Tôi có một UIBarButtonItem
trong UIToolbar
tiêu đề Xong của tôi . Bây giờ tôi muốn thay đổi phông chữ từ mặc định thành "Trebuchet MS" bằng Bold. Làm thế nào tôi có thể làm điều đó?
Câu trả lời:
Vì UIBarButtonItem kế thừa từ UIBarItem, bạn có thể thử
- (void)setTitleTextAttributes:(NSDictionary *)attributes
forState:(UIControlState)state
nhưng đây chỉ dành cho iOS5. Đối với iOS 3/4, bạn sẽ phải sử dụng chế độ xem tùy chỉnh.
Nói chính xác, điều này có thể được thực hiện như dưới đây
[buttonItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Helvetica-Bold" size:26.0], NSFontAttributeName,
[UIColor greenColor], NSForegroundColorAttributeName,
nil]
forState:UIControlStateNormal];
Hoặc với cú pháp nghĩa đen của đối tượng:
[buttonItem setTitleTextAttributes:@{
NSFontAttributeName: [UIFont fontWithName:@"Helvetica-Bold" size:26.0],
NSForegroundColorAttributeName: [UIColor greenColor]
} forState:UIControlStateNormal];
Để thuận tiện, đây là triển khai Swift:
buttonItem.setTitleTextAttributes([
NSAttributedStringKey.font: UIFont(name: "Helvetica-Bold", size: 26.0)!,
NSAttributedStringKey.foregroundColor: UIColor.green],
for: .normal)
Đối với những người quan tâm đến việc sử dụng UIAppearance
để tạo kiểu cho UIBarButtonItem
phông chữ của họ trong suốt ứng dụng, có thể thực hiện bằng cách sử dụng dòng mã này:
Mục tiêu 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)
Swift 3
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSForegroundColorAttributeName : UIColor.white,
], for: .normal)
Swift 4
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSAttributedStringKey.font : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSAttributedStringKey.foregroundColor : UIColor.white,
], for: .normal)
Hoặc đối với một UIBarButtonItem (không dành cho tất cả các ứng dụng), nếu bạn có một phông chữ tùy chỉnh cho một nút cụ thể:
Swift 3
let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
NSFontAttributeName : UIFont(name: "FontAwesome", size: 26)!,
NSForegroundColorAttributeName : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"
Swift 4
let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
NSAttributedStringKey.font : UIFont(name: "FontAwesome", size: 26)!,
NSAttributedStringKey.foregroundColor : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"
Tất nhiên, bạn có thể thay đổi phông chữ & kích thước thành bất cứ thứ gì bạn thích. Tôi thích đặt mã này trong AppDelegate.m
tập tin trong didFinishLaunchingWithOptions
phần.
Thuộc tính có sẵn (chỉ cần thêm chúng vào NSDictionary
):
NSFontAttributeName
: Thay đổi phông chữ bằng một UIFont
NSForegroundColorAttributeName
: Thay đổi màu sắc bằng một UIColor
NSShadow
: Thêm một bóng thả (xem NSShadow
tài liệu tham khảo lớp)(Đã cập nhật cho iOS7 +)
Trong Swift bạn sẽ làm điều này như sau:
backButtonItem.setTitleTextAttributes([
NSFontAttributeName : UIFont(name: "Helvetica-Bold", size: 26)!,
NSForegroundColorAttributeName : UIColor.blackColor()],
forState: UIControlState.Normal)
Đây là những câu trả lời tuyệt vời ở trên. Chỉ cần cập nhật cho 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)
nhanh
barbutton.setTitleTextAttributes([
NSFontAttributeName : UIFont.systemFontOfSize(18.0),
NSForegroundColorAttributeName : UIColor.redColor(),NSBackgroundColorAttributeName:UIColor.blackColor()],
forState: UIControlState.Normal)
Mục tiêu-C
[ barbutton setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Helvetica-Bold" size:20.0], NSFontAttributeName,
[UIColor redColor], NSForegroundColorAttributeName,[UIColor blackColor],NSBackgroundColorAttributeName,
nil]
forState:UIControlStateNormal];
Để làm điều này cho một số UIBarButtonItems
nhưng không phải tất cả tôi đề nghị cách tiếp cận sau đây.
UIBarButtonItem
lớp con. Đừng thêm bất cứ thứ gì vào nó - bạn sẽ chỉ sử dụng nó như một lớp tùy chỉnh trong bảng phân cảnh và cho proxy xuất hiện của nó ...UIBarButtonItems
cho lớp con của bạnUIBarButtonItem
lớp con của bạn và thêm dòng sau vàoapplication:didFinishLaunchingWithOptions:
Trong trường hợp của tôi, tôi phân lớp UIBarButtonItem
cho mục đích duy nhất là làm mờ văn bản:
[[BoldBarButtonItem appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont boldSystemFontOfSize:18.0], NSFontAttributeName,nil]
forState:UIControlStateNormal];
Trong Swift 4 , bạn có thể thay đổi phông chữ và màu sắc UIBarButtonItem
bằng cách thêm mã sau đây.
addTodoBarButton.setTitleTextAttributes(
[
NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Bold", size: 17)!,
NSAttributedStringKey.foregroundColor: UIColor.black
], for: .normal)
Đây là cách đúng: khai báo barButtonItem của bạn (trong trường hợp này là rightBarButtonItem) và thêm nó setTitleTextAttribut.
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Go!", style: .plain, target: self, action: #selector(yourFuncDestination))
sau khi bạn có thể thêm thuộc tính tiêu đề
navigationItem.rightBarButtonItem?.setTitleTextAttributes([.font : UIFont.systemFont(ofSize: 18, weight: .bold), .foregroundColor : UIColor.white], for: .normal)
bạn có thể thay đổi kích thước, trọng lượng (.bold, .ematvy, không thường xuyên, v.v.) và màu sắc như thế nào bạn thích ... Hy vọng điều này sẽ giúp :)
Thực hiện Swift 5
rightButtonItem.setTitleTextAttributes([
NSAttributedString.Key.font: UIFont(name: "Helvetica-Bold", size: 26.0)!,
NSAttributedString.Key.foregroundColor: UIColor.green],
for: .normal)
Trong suốt ứng dụng:
if let font = UIFont(name: "AvenirNext-DemiBold", size: 15) {
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName:TOOLBAR_TITLE_COLOR], forState: UIControlState.Normal)
}
Giả sử bạn muốn hỗ trợ iOS4 trở về trước, cách tốt nhất của bạn là tạo một nút thanh bằng initWithCustomView:
phương pháp và cung cấp chế độ xem của riêng bạn, có thể giống như một UIButton nơi bạn có thể dễ dàng tùy chỉnh phông chữ.
Bạn cũng có thể kéo UIButton lên thanh công cụ hoặc thanh điều hướng trong Trình tạo giao diện nếu bạn muốn tạo nút bằng cách kéo và thả thay vì lập trình.
Thật không may, điều này có nghĩa là tự tạo hình nền nút. Không có cách nào để tùy chỉnh phông chữ của một UIBarButtonItem tiêu chuẩn trước iOS5.
Bạn có thể tạo một tùy chỉnh theo UIView
chương trình:
UIView *buttonItemView = [[UIView alloc] initWithFrame:buttonFrame];
Sau đó thêm hình ảnh, nhãn hoặc bất cứ thứ gì bạn thích vào chế độ xem tùy chỉnh của bạn:
[buttonItemView addSubview:customImage];
[buttonItemView addSubview:customLabel];
...
Bây giờ đặt nó trong của bạn UIBarButtomItem
.
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonItemView];
Và cuối cùng thêm barButtonItem vào thanh điều hướng của bạn.
Để hoàn thành tôi muốn thêm phương thức này, vẫn được sử dụng trong Objective-C vào năm 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];