1

私は、iOS 11がUIBarButtonItemに何らかの変更を加えたことに気付きました。 UIBarButtonItemのイメージのサイジングの問題を解決した後、私は自分自身がさらに奇妙な問題に直面しているのを発見しました。iOS 11 UIBarButtonItem間のスペース

UIToolBarにはいくつかのUIBarButtonItemがあり、UIBarButtonItemの幅を40、UIButton.imageの幅を24に設定していました。これにより、2つのUIBarButtonItem間にはすばらしい間隔があります。しかし、iOS 11では、スペースが消えてしまいます。

私は

[self.deleteButton mas_makeConstraints:^(MASConstraintMaker *make) { 
     make.size.mas_equalTo(CGSizeMake(40, 24)); 
    }]; 

NSLayoutConstraint *w = [self.deleteButton.imageView.widthAnchor constraintEqualToConstant:24]; 
NSLayoutConstraint *h = [self.deleteButton.imageView.widthAnchor constraintEqualToConstant:24]; 
w.active = YES; 
h.active = YES; 

と試みたが、私は思ったようには動作しません。

CGSize(40,24)を使用して引き伸ばした画像のリスト、または間隔を置かずにUINavigationBarに1つずつ並んだCGSize(24,24)のUIBarButtonItemのリストを取得します。

スペースを作成するために追加する必要がある他の制約はありますか?

答えて

1

これを試してみてください:

UIButton*(^buttonWith)(NSString *) = ^(NSString *imageName) { 
    CGFloat size = 40.0; 
    UIButton *button = [[UIButton alloc] initWithFrame: CGRectMake(0.0, 0.0, size, size)]; 
    [button setImage: [[UIImage imageNamed: imageName] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal] forState: UIControlStateNormal]; 
    [button addConstraint: [NSLayoutConstraint constraintWithItem: button attribute: NSLayoutAttributeWidth relatedBy: NSLayoutRelationEqual toItem: nil attribute: NSLayoutAttributeNotAnAttribute multiplier: 1.0 constant: size]]; 
    [button addConstraint: [NSLayoutConstraint constraintWithItem: button attribute: NSLayoutAttributeHeight relatedBy: NSLayoutRelationEqual toItem: nil attribute: NSLayoutAttributeNotAnAttribute multiplier: 1.0 constant: size]]; 
    return button; 
}; 

使用法:あなたがスペースを必要とボタンの間に別のUIBarButtonItemを配置することができますストーリーボードで

UIButton *resetButton = buttonWith(@"reset"); 
self.resetBarButton = [[UIBarButtonItem alloc] initWithCustomView: resetButton]; 

UIButton *backButton = buttonWith(@"back"); 
self.backBarButton = [[UIBarButtonItem alloc] initWithCustomView: backButton]; 

self.navigationItem.leftBarButtonItems = @[self.backBarButton, self.resetBarButton]; 
0

。テキストをスペースのみに設定します。スクリーンショットを参照してください。

enter image description here

enter image description here

enter image description here

関連する問題