相关疑难解决方法(0)

UIBarButtonItem在用作左侧或右侧导航栏项目时,自定义视图未在iOS 7上正确对齐

以下代码通过iOS 6运行:

UIButton *myButton = nil;
myButton = [UIButton buttonWithType:UIButtonTypeCustom];
myButton.bounds = CGRectMake(0,0,44,30);
// setup myButton's images, etc.

UIBarButtonItem *item = nil;
item = [[UIBarButtonItem alloc] initWithCustomView:customButton];
Run Code Online (Sandbox Code Playgroud)

这是按钮应该如何对齐:

正常定位

但是,在iOS 7上,按钮似乎从右侧或左侧偏移了太多像素:

iOS 7上的定位不正确

如何才能使我的自定义条形按钮项目正确对齐?

uinavigationbar uibutton uibarbuttonitem uinavigationitem ios7

75
推荐指数
4
解决办法
6万
查看次数

使用iOS7自定义UIBarButtonItem对齐

所以我遇到了许多其他人在使用UIButton作为自定义视图创建UIBarButtonItem时遇到的相同问题.

基本上,按钮向左或向右约10像素到远.当我使用没有自定义视图的常规BarButtonItem时,这不会发生.

这篇文章提供了部分解决方案: UIBarButton With Custom View

这是我通过子类化UIButton创建的代码(如另一篇文章中所述)

    - (UIEdgeInsets)alignmentRectInsets {
    UIEdgeInsets insets;
    if ([self isLeftButton]) {
        insets = UIEdgeInsetsMake(0, 9.0f, 0, 0);
    }
    else { // IF ITS A RIGHT BUTTON
        insets = UIEdgeInsetsMake(0, 0, 0, 9.0f);
    }
    return insets;
}


- (BOOL)isLeftButton {
    return self.frame.origin.x < (self.superview.frame.size.width / 2);
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但当我从导航控制器弹出一个视图控制器回到这个主视图时,按钮仍然错误地定位了大约.3秒,然后它捕捉到正确的插图.

这是一个巨大的眼睛,我不知道如何阻止它像这样攫取.有什么想法吗?谢谢!

uibutton uinavigationcontroller uibarbuttonitem ios7

18
推荐指数
1
解决办法
1万
查看次数