2017-09-15 20 views
13

Câu trả lời cho câu hỏi của tôi được gợi ý tại số this question, vì vậy tôi nghĩ câu trả lời là tắt tự động trả lời cho chế độ xem UIToolbar của tôi.Hình ảnh iOS 11 UIBarButtonItem không định kích thước

Các mã mà được cho là làm việc cho quan điểm là

cButton.translatesAutoresizingMaskIntoConstraints = YES; 

Nhưng tôi không chắc chắn nếu nó áp dụng cho mã của tôi kể từ khi UIToolbar không kế thừa từ UIView.

Tôi có rất nhiều hình ảnh nhỏ mà tôi sử dụng trong các trò chơi có kích thước khác nhau tùy thuộc vào thiết bị và hướng. Thay vì có nhiều hình ảnh khác nhau và thêm hình ảnh mới khi Apple giới thiệu thiết bị mới, tôi quyết định tạo một hình ảnh 160x160 trước và sau đó thay đổi kích thước hình ảnh khi được sử dụng. Điều này làm việc tốt từ iOS 4 - iOS 10 nhưng thất bại trong iOS 11.

Mã này khá đơn giản:

// Get the image 
NSString *pictFile = [[NSBundle mainBundle] pathForResource:@"Correct" ofType:@"png"]; 
UIImage *imageToDisplay = [UIImage imageWithContentsOfFile:pictFile]; 
UIImage *cImage = [UIImage imageWithCGImage:imageToDisplay.CGImage scale:[UIScreen mainScreen].scale orientation:imageToDisplay.imageOrientation]; 

UIButton *cButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[cButton setImage:cImage forState:UIControlStateNormal]; 
[cButton setTitle:@"c" forState:UIControlStateNormal]; 

//set the frame of the button to the size of the image 
cButton.frame = CGRectMake(0, 0, standardButtonSize.width, standardButtonSize.height); 

//create a UIBarButtonItem with the button as a custom view 
c = [[UIBarButtonItem alloc] initWithCustomView:cButton]; 

Đây là những gì nó trông giống như pre11. Các mục nút thanh đã được thay đổi kích thước và vừa với nhau ở thanh dưới cùng. Lưu ý tôi đã giảm kích thước của dấu kiểm xuống 50% chỉ để đảm bảo rằng tôi đang xem mã đúng và nó hoạt động như tôi mong đợi.

correct version

Dưới đây là những gì họ trông giống như trong mô phỏng cho Xcode 9.0 GM và iOS 11. Lưu ý rằng hàng đầu của các nút thay đổi kích thước một cách chính xác nhưng hàng dưới cùng mở rộng để lấp đầy không gian phân bổ cho các thanh tab. Hành vi tương tự cũng xảy ra trên iPad cũng như các thiết bị khác nhau.

iOS 11

Bất kỳ ý tưởng nào về cách tắt Tự động điền hoặc thêm ràng buộc?

Trả lời

42

BarButtonItem (iOS11 \ xCode9) sử dụng tính năng tự động thay thế cho khung. Hãy thử điều này (Swift):

if #available(iOS 9.0, *) { 
    cButton.widthAnchor.constraint(equalToConstant: customViewButton.width).isActive = true 
    cButton.heightAnchor.constraint(equalToConstant: customViewButton.height).isActive = true 
} 

Objective C

if (@available(iOS 9, *)) { 
    [cButton.widthAnchor constraintEqualToConstant: standardButtonSize.width].active = YES; 
    [cButton.heightAnchor constraintEqualToConstant: standardButtonSize.height].active = YES; 
} 
+0

Cảm ơn gợi ý. Tôi đã thêm phiên bản Obj C. – JScarry

+0

Tuyệt vời! nó làm việc cho tôi. thankx. – Bucket

0

Fallstreak câu trả lời (1) là giải pháp trong trường hợp của tôi. Tôi đã có chế độ xem tùy chỉnh không hoạt động trên máy. Chỉ muốn chia sẻ những gì tôi phải làm cho chế độ xem tùy chỉnh trong một mục điều hướng để hoạt động. Đây là tất cả nhanh chóng 3

let backButtonView = BackButtonView.loadNib() 
backButtonView?.addTarget(self, action: #selector(returnToPrevious), for: .touchUpInside) 
backButtonView.widthAnchor.constraint(equalToConstant: backButtonView.frame.width).isActive = true 
backButtonView.heightAnchor.constraint(equalToConstant: backButtonView.frame.height).isActive = true 
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButtonView!) 

2 dòng về chiều rộng/chiều cao neo đến từ câu trả lời của Fallstreak và là giải pháp trong trường hợp này.

Các vấn đề liên quan