iOS 9 导航栏内容旋转后不居中 iOS 9?
iOS 9 UINavigation bar content is not centred after rotation in iOS 9?
我注意到 iOS 9 中的错误,或者可能是我没有正确使用某些东西。
在针对 iPhone 的空项目中的以下代码中:
UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show" style:UIBarButtonItemStylePlain target:self action:@selector(test:)];
self.navigationItem.rightBarButtonItem = anotherButton;
self.navBar.items = @[self.navigationItem];
我向导航栏添加了自定义按钮 属性。我注意到从纵向旋转到横向后,按钮向下移动并且它在导航栏中没有正确居中。
Portrait Screen
Landscape Screen
例如,如果我为 iOS 8.4 编译,但在 iOS 9.
上编译,则此代码工作正常
有人遇到过吗?
谢谢!
我在 iPad 上看到过类似的内容。当我以纵向启动应用程序,然后旋转到横向时,View Controller 的 navigationItem.titleView 不再正确对齐。我只是在 Swift:
中旋转后重置它
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animateAlongsideTransition(nil) { (coordinator) -> Void in
self.navigationItem.titleView = someView
}
}
Swift 3:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animate(alongsideTransition: nil) { (coordinator) -> Void in
self.navigationItem.titleView = self.someView
}
}
我已经设法解决了自定义导航栏 class 的问题,并使用了覆盖的方法:
-(void) layoutSubviews
{
[super layoutSubviews];
for (UIView *view in self.subviews)
{
if ([view isKindOfClass:[UIView class]] ||
[view isKindOfClass:[UIButton class]] ||
[view isKindOfClass:[UISearchBar class]] ||
[view isKindOfClass:[UILabel class]])
{
CGRect frame = view.frame;
frame.origin.y = (self.frame.size.height - frame.size.height) / 2.f;
view.frame = frame;
}
}
}
可以在 if 语句中添加其他类型的视图 classes。它不是最干净的解决方案,但它现在可以。
我注意到 iOS 9 中的错误,或者可能是我没有正确使用某些东西。
在针对 iPhone 的空项目中的以下代码中:
UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show" style:UIBarButtonItemStylePlain target:self action:@selector(test:)];
self.navigationItem.rightBarButtonItem = anotherButton;
self.navBar.items = @[self.navigationItem];
我向导航栏添加了自定义按钮 属性。我注意到从纵向旋转到横向后,按钮向下移动并且它在导航栏中没有正确居中。
Portrait Screen Landscape Screen 例如,如果我为 iOS 8.4 编译,但在 iOS 9.
上编译,则此代码工作正常有人遇到过吗?
谢谢!
我在 iPad 上看到过类似的内容。当我以纵向启动应用程序,然后旋转到横向时,View Controller 的 navigationItem.titleView 不再正确对齐。我只是在 Swift:
中旋转后重置它override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animateAlongsideTransition(nil) { (coordinator) -> Void in
self.navigationItem.titleView = someView
}
}
Swift 3:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animate(alongsideTransition: nil) { (coordinator) -> Void in
self.navigationItem.titleView = self.someView
}
}
我已经设法解决了自定义导航栏 class 的问题,并使用了覆盖的方法:
-(void) layoutSubviews
{
[super layoutSubviews];
for (UIView *view in self.subviews)
{
if ([view isKindOfClass:[UIView class]] ||
[view isKindOfClass:[UIButton class]] ||
[view isKindOfClass:[UISearchBar class]] ||
[view isKindOfClass:[UILabel class]])
{
CGRect frame = view.frame;
frame.origin.y = (self.frame.size.height - frame.size.height) / 2.f;
view.frame = frame;
}
}
}
可以在 if 语句中添加其他类型的视图 classes。它不是最干净的解决方案,但它现在可以。