在iPhone 6+上,当你添加自定义左栏按钮项时,看起来UINavigationBars的左边距为20pt。在其他设备上它是16pt。
那很好,在更宽屏幕的设备上可能有助于将按钮放在拇指触及范围内:))
我试图将我的用户界面对齐(它是菜单项的表格视图)并证明它很棘手。
有没有办法以编程方式获得该边距,因此我可以在我的UI中的其他位置使用该值。
这样的事情是理想的:
CGFloat padding = self.navigationBar.leftMargin;
但显然不存在:(
有什么建议吗?
答案 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