我正在使用以下各行获取导航栏框架的大小,直到iOS版本11都可以正常使用,但是将iOS版本升级到11后,其返回的零值为(0,0)。谁能帮我解决这个问题。
CGRect frame = self.superview.frame;
// Look for the navigation bar.
UINavigationBar *navigationBar;
UIView *superView = self;
while (superView.superview)
{
if ([superView.superview isKindOfClass:[UINavigationBar class]])
{
navigationBar = (UINavigationBar*)superView.superview;
break;
}
superView = superView.superview;
}
if (navigationBar)
{
CGSize navBarSize = navigationBar.frame.size;
CGFloat superviewCenterX = frame.origin.x + (frame.size.width / 2);
// Check whether the view is not moving away (see navigation between view controllers).
if (superviewCenterX < navBarSize.width)
{
// Center the display name
self.displayNameCenterXConstraint.constant = (navBarSize.width / 2) - superviewCenterX;
}
}
答案 0 :(得分:1)
您永远不会初始化NavigationBar,所以我假设您正在尝试获取null的navBarSize。
如果您在具有导航栏的视图控制器中使用此代码,则可以考虑以下几行:
UINavigationBar *navigationBar = self.navigationController.navigationBar;
CGSize navBarSize = navigationBar.frame.size;
如果这不符合您的需求,建议您添加其他示例代码/上下文,以说明出现问题或尝试执行的操作。