2015-10-13 94 views
0

我注意到了iOS 9中的一個錯誤,或者可能是我沒有正確使用某些東西。iOS 9在iOS 9中旋轉後,UINavigation欄內容不居中?

在針對iPhone的空項目下面的代碼:

UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show" style:UIBarButtonItemStylePlain target:self action:@selector(test:)]; 
self.navigationItem.rightBarButtonItem = anotherButton; 

self.navBar.items = @[self.navigationItem]; 

我添加了一個自定義的按鈕,導航欄屬性。我注意到,在從縱向旋轉到橫向之後,按鈕向下移動,導航欄中的按鈕未正確居中。如果我編譯的iOS 8.4例如

Portrait Screen Landscape Screen 此代碼工作正常,但不能在iOS 9

有沒有人遇到過嗎?

謝謝!

回答

0

我設法與和覆蓋的方法修復與自定義導航欄類​​問題:

-(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語句中添加其他類型的視圖類。它不是最乾淨的解決方案,但它現在可以完成。

1

我在iPad上看到類似的東西。當我以縱向方式啓動應用程序,然後旋轉到橫向時,View Controller的navigationItem.titleView不再正確對齊。我簡單地旋轉後重置它在斯威夫特如下:

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 
    coordinator.animateAlongsideTransition(nil) { (coordinator) -> Void in 
     self.navigationItem.titleView = someView 
    } 
} 

斯威夫特3:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
    coordinator.animate(alongsideTransition: nil) { (coordinator) -> Void in 
     self.navigationItem.titleView = self.someView 
    } 
} 
+0

感謝您的回答,但我確實是你從開始描述:)。 –