NavigationItem LeftBarButtonItem Custome查看Auto Layaut

时间:2015-06-30 15:24:14

标签: ios objective-c autolayout uinavigationbar

我正在尝试从笔尖设置一个服装navigationItem.leftBarButtonItem,但我在横向中得到了一个奇怪的行为。

编辑:

要清楚视图包含一个按钮和一个标签,这就是我使用服装视图的原因,按钮和标签都有约束。

self.buttonView =//init;
[self.buttonView setFrame:CGRectMake(0, 0, 36, 36)];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.buttonView];

[self.buttonView setBackgroundColor:[UIColor redColor]];
//you will see why

Portrait Landscape

2 个答案:

答案 0 :(得分:0)

似乎autolayout正试图满足一些限制,因此它会扩展你的按钮框架。

要解决此问题,请将contentHugging优先级设置为按钮所需:

[self.buttonView setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];

尝试一下,让我知道它是否有效

答案 1 :(得分:0)

这是我能找到的唯一解决办法,如果有人有更好的想法请随时分享

-(void)viewWillLayoutSubviews{

    [super viewWillLayoutSubviews];

    [self setMenuButtonFrame];

}

-(void)setMenuButtonFrame
{
    self.menuView.frame = CGRectMake(self.menuView.frame.origin.x,     
    self.menuView.frame.origin.y, 
    self.navigationController.navigationBar.frame.size.height-8, 
    self.navigationController.navigationBar.frame.size.height-8);
}