2017-11-02 12 views
1

iOS11で期待どおりに機能するようにアプリをアップデートしています。私が遭遇した唯一の問題は、iOS11ではナビゲーションバーがかなり違って見えるということです。要素とサイズの位置はバージョン間で同じではありません。私は自分のコードを見てきました。フレームサイズとエッジのインセットを明示的に設定していますが、なぜこれらの値はiOS11では尊重されていませんか?UINavigationItems iOS11でのストレッチ

//-- Create Right Navigation Item Buttons 

// create kabob btn 
UIButton *kabobBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
[kabobBtn addTarget:self action:@selector(viewUsersClicked:)forControlEvents:UIControlEventTouchUpInside]; 
kabobBtn.clipsToBounds = YES;  
[kabobBtn setImage:[UIImage imageNamed:@"KabobMenu2_0071bc_Right.png"] 
       forState:UIControlStateNormal]; 
[kabobBtn.imageView setContentMode:UIViewContentModeScaleAspectFit]; 
[kabobBtn setFrame:CGRectMake(0, 0, 32, 32)]; 

// create user profile button 
UIButton *userBtn = [UIButton buttonWithType:UIButtonTypeCustom];  
[userBtn setImage:[UIImage imageNamed:@"people.png"] 
     forState:UIControlStateNormal]; 
[userBtn addTarget:self action:@selector(viewUserProfileClicked:)forControlEvents:UIControlEventTouchUpInside]; 
[userBtn setFrame:CGRectMake(0, 0, 38, 38)]; 
userBtn.clipsToBounds = YES; 

[userBtn.layer setCornerRadius:(38/2)]; 
[userBtn.layer setMasksToBounds:YES]; 
[userBtn.layer setBorderColor:[[UIColor blackColor]CGColor]]; 
[userBtn.layer setBorderWidth:1]; 


self.userPictureURL = [defaults objectForKey:@"userPicture"]; 

[userBtn setImage:[UIImage imageNamed:@"defaultUserImage.png"] forState:UIControlStateNormal]; 
[userBtn setContentMode:UIViewContentModeScaleAspectFill]; 
[userBtn setBackgroundColor:[UIColor clearColor]]; 

// add buttons to bar button items 
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:kabobBtn]; 
UIBarButtonItem *barButton2 = [[UIBarButtonItem alloc] initWithCustomView:userBtn]; 

// add bar button items to right bar button item array 
self.navigationItem.rightBarButtonItems = @[barButton,barButton2]; 

//-- Create Left Hamburger Button 
UIButton *customOpen = [UIButton buttonWithType:UIButtonTypeCustom]; 
[customOpen setFrame:CGRectMake(0, 0, 30, 44)]; 
[customOpen setImage:[UIImage imageNamed:@"hamburger.png"] forState:UIControlStateNormal]; 
[customOpen setImageEdgeInsets:UIEdgeInsetsMake(10, -5, 16, 10)]; 
UIBarButtonItem *openItem = [[UIBarButtonItem alloc] initWithCustomView:customOpen]; 

if(self.showHamburger){ 
    self.navigationItem.leftBarButtonItem = openItem; 

}else{ 
    self.navigationItem.leftBarButtonItem = nil; 

} 

Navigation Bar in iOS10 Navigation Bar in iOS11

+0

おかげで私は2番目のこれ、私は同じ問題を抱えている根本原因もこれに対する解決策を見つけることができませんでした。これを修正する方法を見つけましたか? –

答えて

2

どうやらiOS版11は、ナビゲーションバーのボタンの自動レイアウトを使用しています。自動レイアウトの制約を使用して、ボタンの幅と高さを設定します。

[userBtn.widthAnchor constraintEqualToConstant:38.f].active = YES; 
[userBtn.heightAnchor constraintEqualToConstant:38.f].active = YES; 

これはストレッチの問題を修正するはずです。 this answer

関連する問題