UINavigationBar左边距

时间:2015-05-21 08:54:48

标签: ios iphone uinavigationbar

在iPhone 6+上,当你添加自定义左栏按钮项时,看起来UINavigationBars的左边距为20pt。在其他设备上它是16pt。

那很好,在更宽屏幕的设备上可能有助于将按钮放在拇指触及范围内:))

我试图将我的用户界面对齐(它是菜单项的表格视图)并证明它很棘手。

有没有办法以编程方式获得该边距,因此我可以在我的UI中的其他位置使用该值。

这样的事情是理想的:

CGFloat padding = self.navigationBar.leftMargin;

但显然不存在:(

有什么建议吗?

3 个答案:

答案 0 :(得分:5)

iOS 8引入了布局边距的概念。每个视图(UIView及其子类)都包含layoutMargins属性,可以为您提供所需的属性。

此外,您可以使用layoutMarginsDidChange收听保证金的更改,以对保证金更改做出反应。此方法也在初始布局后调用,因此您可以在此处做出反应并将视图适当地布局到系统提供的边距。这是首选,因为根据设备的不同,当尺寸等级发生变化时,边距可能会发生变化(例如,iPhone 6 Plus旋转)。这样,您的视图将始终使用正确的边距显示。

有关布局边距的详细信息,请阅读here

答案 1 :(得分:1)

您可以获取UINavigationBar

的子视图

然后,您可以迭代循环以查找自定义视图。使用该视图,您可以找到它的位置。像,

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[Your Custom View Class]];

    for(id object in self.navigationController.navigationBar.subviews){
        if([object isKindOfClass:[Your Custom View Class]]){
            UIView *item = (UIView *)object;
            NSLog(@"%f",item.frame.origin.x);
        }
    }

希望它可以帮助你..

答案 2 :(得分:0)

简单的方法

let leftMargin = self.navigationController?.systemMinimumLayoutMargins.leading