如何设置UIToolBar的标题,使其看起来与UINavigationBar中的标题相同?
我尝试使用普通样式的按钮,它看起来不错,但是当我点击它时会突出显示...有没有更好的方法在拆分视图的详细视图中设置标题?
答案 0 :(得分:27)
这就是我用来在工具栏上显示标题时按下时不会突出显示的内容:
#define UIColorFromRGB(rgbValue) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
// choose whatever width you need instead of 600
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 600, 23)];
label.textAlignment = UITextAlignmentCenter;
label.backgroundColor = [UIColor clearColor];
label.shadowColor = UIColorFromRGB(0xe5e7eb);
label.shadowOffset = CGSizeMake(0, 1);
label.textColor = UIColorFromRGB(0x717880);
label.text = @"your title";
label.font = [UIFont boldSystemFontOfSize:20.0];
UIBarButtonItem *toolBarTitle = [[UIBarButtonItem alloc] initWithCustomView:label];
[label release];
答案 1 :(得分:8)
这解决了突出显示问题,已禁用的问题和触摸问题。
工具栏和titleButton都是在IB中创建的。 视图标题由工具栏覆盖。所以把标题放在工具栏中。
self.titleButton.title = @"Order"; // myInterestingTitle
看起来像这样:
禁用以防止突出显示,并阻止其响应触摸。
self.titleButton.enabled=NO;
然后它看起来像这样:
它看起来已禁用,因此将禁用的颜色设置为白色, 它具有隐含的alpha = 1.0。 这有效地覆盖了“禁用”外观。
[self.titleButton setTitleTextAttributes:
[NSDictionary dictionaryWithObject:[UIColor whiteColor]
forKey:UITextAttributeTextColor]
forState:UIControlStateDisabled ];
这是你得到的:
答案 2 :(得分:7)
我认为这会更清洁:
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:frame];
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"Your Title"
style:UIBarButtonItemStylePlain
target:nil
action:nil];
UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:nil
action:nil];
NSArray *items = [[NSArray alloc] initWithObjects:spacer, item, spacer, nil];
[toolbar setItems:items];
toolbar.userInteractionEnabled = NO;
答案 3 :(得分:1)
答案 4 :(得分:1)
UILabel* title = [[[UILabel alloc] init] autorelease];
[title setBackgroundColor:[UIColor clearColor]];
[title setFont:[UIFont boldSystemFontOfSize:20]];
[title setTextAlignment:UITextAlignmentCenter];
[title setTextColor:[UIColor grayColor]];
[title.layer setShadowColor:[[UIColor colorWithWhite:1.0 alpha:0.5] CGColor]];
[title.layer setShadowOffset:CGSizeMake(0, 1)];
[title.layer setShadowRadius:0.0];
[title.layer setShadowOpacity:1.0];
[title.layer setMasksToBounds:NO];
[title setText:@"Sample Title"];
[title sizeToFit];
// [[[UIBarButtonItem alloc] initWithCustomView:title] autorelease]
答案 5 :(得分:1)
Swift 5版本的Rayfleck很好的答案:
let titleButton = UIBarButtonItem(title: "My Title", style: .plain, target: nil, action: nil)
titleButton.isEnabled = false
titleButton.setTitleTextAttributes([.foregroundColor : UIColor.black], for: .disabled)
将此按钮照常添加到工具栏。
答案 6 :(得分:0)
在普通样式中使用UIBarButtonItem,并使用具有清晰背景的UIView覆盖相应区域中的工具栏。视图使用水龙头并将其隐藏在条形按钮项目中。确保正确设置自动调整遮罩。
答案 7 :(得分:-2)
您可以在Interface Builder中取消选中“在突出显示时显示触摸”。