如何设置UIToolBar的标题?

时间:2010-05-02 18:56:51

标签: objective-c ipad

如何设置UIToolBar的标题,使其看起来与UINavigationBar中的标题相同?

我尝试使用普通样式的按钮,它看起来不错,但是当我点击它时会突出显示...有没有更好的方法在拆分视图的详细视图中设置标题?

8 个答案:

答案 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

看起来像这样: enter image description here

禁用以防止突出显示,并阻止其响应触摸。

self.titleButton.enabled=NO;

然后它看起来像这样:enter image description here

它看起来已禁用,因此将禁用的颜色设置为白色, 它具有隐含的alpha = 1.0。 这有效地覆盖了“禁用”外观。

[self.titleButton setTitleTextAttributes:
        [NSDictionary dictionaryWithObject:[UIColor whiteColor]
                                    forKey:UITextAttributeTextColor]
                                forState:UIControlStateDisabled ];

这是你得到的:enter image description here

答案 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)

enter image description here

  1. 在工具栏上放置常规的“圆角矩形按钮”(UIButton)(不是“条形按钮项”)!请注意,在场景背后,IB使用UIBarButtonItem包装UIButton。这就是为什么你必须单击按钮两次以获得UIButton属性(对于Xcode 4.2来说是真的)。​​
  2. 访问UIButton属性。当您第一次单击时,您将获得“Bar button item”属性(这是IB为您自动创建的)。现在点击第二次,您将进入“按钮”属性(同样,当您选择UIButton时,您无法调整其大小,也无法看到调整大小标记)。
  3. 在按钮属性设置中键入“自定义”以删除按钮周围的圆角矩形边框(您可能需要调整IB中的按钮以刷新它,然后才能看到差异)。
  4. 在“查看”下的按钮属性中,取消选中“启用用户互动”。

答案 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中取消选中“在突出显示时显示触摸”。