1

iOS 11이 UIBarButtonItem을 약간 변경 한 것을 확인했습니다. UIBarButtonItem 이미지의 크기 조정 문제를 해결 한 후에는 더 이상한 문제에 직면하게됩니다.iOS 11 UIBarButtonItem 사이의 간격

UIToolBar에는 여러 UIBarButtonItem이 있으며 UIBarButtonItem의 너비를 40으로 설정하고 UIButton.image의 너비를 24로 설정하여 두 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) 또는 CGSize (24, 24)가있는 UIBarButtonItem 목록을 간격없이 UINavigationBar에 줄이는 목록으로 가져옵니다.

간격을 만들기 위해 추가해야하는 다른 제한 사항이 있습니까?

답변

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