2017-10-25 15 views
6

Tối đa iOS 10, UIToolbar có các mục buttom thanh không gian linh hoạt giữa các mục của nó sẽ tự động giảm phông chữ sao cho tất cả văn bản được hiển thị trên màn hình. Mẫu bên dưới (iOS 10):Trên iOS11, làm thế nào để có UIToolbar để kích thước tất cả các mục để phù hợp?

iOS 10 Sample

Kể từ XCode 9, khi chạy iOS 11 trên giả lập thanh công cụ của tôi sẽ được hiển thị như thế này:

iOS 11 Sample

không chỉ văn bản không có kích thước phông chữ của nó giảm nhưng mục nút thanh cuối cùng (không có văn bản, chỉ có một hình ảnh) đã biến mất.

Cố gắng giải quyết vấn đề này, tôi đã phát hiện ra rằng kể từ iOS 11, UIToolbar hiện sử dụng Tự động trả lời thay vì Khung. Một số bài viết liên quan theo cách với vấn đề này gợi ý tạo các ràng buộc cho các mục, chỉ định chiều rộng và/hoặc chiều cao cho các mục.

Tuy nhiên, những gì tôi muốn đạt được là phù hợp với mọi thứ trong thanh công cụ, ngay cả khi nó có nghĩa là giảm kích thước phông chữ. Tôi không nghĩ rằng tôi có thể đi với thiết lập chiều rộng cố định/chiều cao lập trình sau đó.

Ngoài ra, điều này được xây dựng bằng cách sử dụng IB trên Bảng phân cảnh. UIBarButton lớp không cho tôi quyền truy cập vào UILabel (cho mục văn bản) hoặc ImageView (đối với các mục có hình ảnh). Tôi đã kiểm tra và customViewnil khi chạy.

Tôi đã cố gắng tạo các mục qua mã, đặt customView thành UILabel với adjustsFontSizeToFitWidth đặt thành true mà không có bất kỳ may mắn nào. Tôi không có đầu mối mục đích của các mục thanh không gian linh hoạt trên iOS 11.

Vậy, cách bắt chước hành vi mà tôi đã có trước đây? Khớp tất cả các mục và đổi kích thước văn bản tự động?

+0

Nếu bạn cảm thấy rằng chức năng có giá trị đã bị mất, gửi báo cáo lỗi với Apple. – matt

+0

@matt Tôi có thể, vâng. Tôi chỉ cho rằng tôi đang làm điều gì đó sai. –

+0

Mọi cập nhật lớn đều mất một số thứ ... – Dmitry

Trả lời

0

Bạn sẽ cần phải tự thiết lập kích thước của UIBarButtonItems, ví dụ:

NSUInteger smallFontSize = SMALL_FONT; // e.g. font size of 12 
self.smallFont = [UIFont boldSystemFontOfSize:smallFontSize]; 
self.smallFontAttributes = @{NSFontAttributeName: self.smallFont}; 

- (void)shrinkButtonFontSize:(NSArray *)barButtonItems { 
for (UIBarButtonItem* button in barButtonItems) { 
    [button setTitleTextAttributes:self.smallFontAttributes forState:UIControlStateNormal]; 
    [button setTitleTextAttributes:self.smallFontAttributes forState:UIControlStateSelected]; 
    [button setTitleTextAttributes:self.smallFontAttributes forState:UIControlStateDisabled]; 
} 
} 
Các vấn đề liên quan