我正在尝试借助工具栏自定义我的NavigationBar。 我已按照以下方式以编程方式实现它:
UIToolbar* tools = [[UIToolbar alloc] initWithFrame: CGRectMake(0, 0, 100, 44.01)];
然后我将它添加到我的NavigationBar中。问题是我对边界有这种丑陋的影响:
我试图更改y和高度值,但没有结果。 你有任何想法可以避免这种情况吗?
提前致谢,yassa
答案 0 :(得分:2)
我不会这样做。 您可以通过向navigationItem.rightBarButtonItem添加带有2个按钮的视图来实现相同的效果。这很简单:
// view that will hold the buttons
UIView* container = [[UIView alloc] init];
// create 1 button and add it to the container
UIButton* button = [[UIButton alloc] init........];
[container addSubview:button];
//create 2 button and add it to the container
button = [[UIButton alloc] init.........];
[container addSubview:button];
// now create a Bar button item
UIBarButtonItem* barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:container];
// set the nav bar's right button item
self.navigationItem.rightBarButtonItem = barButtonItem;
答案 1 :(得分:2)
我部分同意之前的回答和评论。 您建议的解决方案适用于自定义按钮。但是,如果我想实现标准的编辑按钮怎么办? 访问标准按钮/图标是通过UIBarButtonItem类,而不是UIButton。而且你不能将UIBarButtonItem对象添加到UIView。
经过网上的多项研究,我发现完全符合我要求的解决方案。必须按以下方式创建工具栏:
UIToolbar *tools = [[UIToolbar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 95.0f, 44.01f)];
tools.tintColor = self.navigationController.navigationBar.tintColor;
tools.barStyle = -1;
这就是结果:
希望它有所帮助! yassa
答案 2 :(得分:0)
或者你可以这样做。 只需像这样创建UIToolbar的新子类</ p>
@interface MyToolbar : UIToolbar
@end
@implementation MyToolbar
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
self.opaque = NO;
self.backgroundColor = [UIColor clearColor];
self.clearsContextBeforeDrawing = YES;
}
return self;
}
- (void)drawRect:(CGRect)rect {
// do nothing
}
- (void)dealloc {
[super dealloc];
}
@end
并将其用作普通的UIToolbar。我不知道为什么,但它只是有效。