2016-02-02 24 views
14

Tôi muốn phù hợp với văn bản của mình trong một số UILabel, nhưng đối với iPhone khác, kích thước của UILabel đang thay đổi vì tôi đang sử dụng bố cục tự động, nhưng tôi không thể sửa cỡ phông chữ, vì vậy văn bản của tôi bị cắt.Cách tự động thay đổi kích thước phông chữ trong bố cục tự động iOS?

Có cách nào để tôi có thể đặt bất kỳ ràng buộc nào để văn bản phù hợp với UILabel động không?

See here the text got cut, because of different screen resolution

+0

Thử giảm ưu tiên ôm nội dung của nhãn – iAnurag

+0

bạn cần phải thiết lập font size programatically ưu tiên ôm –

+0

nội dung được thiết lập để 251, và đó là thấp nhất tương ứng để hạn chế khác @iAnurag –

Trả lời

32

Bạn nên sử dụng autoshrink.

Vì tất cả iPhone có cùng lớp Compact width khi ở chế độ dọc, bạn không thể dựa vào điều này để xử lý kích thước nhãn của mình.


bản xem trước dành cho iPhone5, iPhone6 ​​và iPhone 6+

enter image description here

Trong thanh tra, bạn phải chọn quy mô chữ tối thiểu hoặc cỡ chữ tối thiểu trước Autoshrink. Điều này cho phép nội dung thay đổi kích thước phông chữ để vừa với nhãn.

Ở đây, tôi đặt tỷ lệ phông chữ tối thiểu thành 0,5 để kích thước tối thiểu bằng một nửa kích thước hiện tại (31.0). Văn bản sẽ cố gắng vừa vặn cho đến khi nó đạt đến kích thước/kích thước tối thiểu.

(Thường không sử dụng "Làm hẹp khoảng cách giữa các chữ cái" cho mục đích này. Thắt chặt khoảng cách giữa các chữ sử dụng cùng kích thước phông chữ và giảm khoảng cách giữa các chữ cái có thể làm cho nhãn từ 2% đến 5% chặt hơn trước khi cắt bớt, nhưng không hiệu quả khi phông chữ tối thiểu quy mô/size được kích hoạt.)


Bạn có thể muốn thử nghiệm với một thiết bị màn hình rộng như iPad Pro, và cũng trên một màn hình nhỏ hơn như iPhone 4S.

Tự động sửa sẽ không điều chỉnh kích thước phông chữ lớn hơn kích thước trên nhãn, điều đó có nghĩa là nếu bạn làm cho nhãn có cùng chiều rộng với màn hình nhưng để kích thước phông chữ là , nó sẽ cố gắng tăng phông chữ kích thước cho đến khi nó đạt đến kích thước đó.

Để làm cho nó thực sự hoạt động, hãy chọn một kích thước phông chữ lớn.

Bạn vẫn có thể kết hợp tự động sửa với các lớp kích thước để thay đổi kích thước phông chữ tối đa tùy thuộc vào thiết bị/hướng.


Trong trường hợp bạn muốn sử dụng autoshrink với UIButton s, bạn vẫn có thể thiết lập hành vi này với hai dòng mã.

myButton.titleLabel.minimumScaleFactor = 0.5; 
myButton.titleLabel.adjustsFontSizeToFitWidth = YES; 
+0

@Joe Blow Bạn không cần phải sử dụng một kích thước phông chữ lớn để làm cho nó hoạt động, chỉ cần thiết lập kích thước phông chữ tối đa trên nhãn của bạn, một trong những bạn muốn sử dụng trên iPad Pro. Luôn kiểm tra trên tất cả các kích thước màn hình, bạn có thể dễ dàng xem trước bằng trình chỉnh sửa trợ lý _preview_ như tôi đã trình bày. – Crazyrems

+0

hi @Crazyrems - hoàn toàn đúng; nhưng đừng quên một máy mới luôn được phát hành với nhiều điểm ảnh vật lý hơn! Cảm ơn một lần nữa vì câu trả lời tuyệt vời. Bạn có thể thấy điều này hữu ích ... http://stackoverflow.com/q/37266118/294884 .. hoặc thậm chí biết câu trả lời ở đó? – Fattie

+0

@Crazyrems làm thế nào chúng ta có thể làm điều này cho textfields hoặc textviews? – ARS

4

Hi nếu bạn đang thêm UILabel từ kịch bản bạn có thể đặt phông chữ khác nhau cho tất cả các bố trí sẵn.

enter image description here

+0

Câu trả lời hoàn hảo cảm ơn rất nhiều !! hoàn hảo ? bởi vì nó hoạt động với phông chữ uilabel và phông chữ uibutton !!! Autoshrink không hoạt động với uibutton –

+1

@WilliamsOuiOui autoshrink hoạt động với 'UIButton's, một nút chứa' UILabel' :). Chỉ cần đặt thuộc tính autoshrink 'titleLabel' của' UIButton'. Tôi đã cập nhật câu trả lời của mình. – Crazyrems

4

Bạn có thể thực hiện việc này bằng cách sử dụng các lớp kích thước. mỗi kích thước hiển thị bằng cách sử dụng một lớp kích thước, điều này sẽ dẫn đến bốn thiết bị trừu tượng: Chiều rộng thông thường-Chiều cao thông thường, Chiều rộng thông thường-Chiều cao nhỏ gọn, Chiều rộng nhỏ gọn-Chiều cao thông thường và Chiều rộng nhỏ gọn chiều rộng nhỏ gọn. Bảng bên dưới hiển thị các thiết bị iOS và các lớp kích thước tương ứng của chúng.  enter image description here

Để đặt kích thước phông chữ cho lớp kích thước cụ thể này, trước tiên hãy chọn UILabel. Trong thanh tra Thuộc tính, bạn sẽ thấy nút dấu cộng (+) bên cạnh trường phông chữ. Nhấp vào nút + và chọn Chiều rộng nhỏ gọn> Chiều cao thông thường (Hoặc theo yêu cầu của bạn, hãy chọn chiều rộng & Chiều cao). Sau đó, bạn sẽ thấy một mục mới cho tùy chọn Phông chữ, được dành riêng cho lớp kích thước cụ thể đó. Giữ nguyên kích thước cho tùy chọn Phông chữ ban đầu nhưng thay đổi kích cỡ của trường phông chữ wC hR (HOẶC theo lựa chọn của bạn) thành các điểm bắt buộc (ví dụ 14).

enter image description here

+0

Cảm ơn, điều này hữu ích, có cách nào khác hoặc tôi có thể tạo mối quan hệ giữa kích thước nhãn và cỡ chữ và đặt ràng buộc không? –

+0

Bạn có thể sử dụng thuộc tính adjustsFontSizeToFitWidth của UILable https://developer.apple.com/library/ios/documentation/UIKit/Reference/UILabel_Class/index.html#//apple_ref/occ/instp/UILabel/adjustsFontSizeToFitWidth –

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