2015-06-11 13 views
5

tôi đã tạo ra một cái nhìn textfield subclassed bên trong điều khiển điểm của tôi, với kích thước phông chữ để , các AdjustFontSizeToWidth kích hoạt và kích thước phông chữ tối thiểu đến 10. Trường văn bản của tôi có văn bản giữ chỗ quá lớn để vừa với chế độ xem. Điều chỉnh kích thước phông chữ thành chiều rộng được kích hoạt và hệ thống đang giảm kích thước phông chữ xuống . Tôi không biết chính xác lý do tại sao , vì trình giữ chỗ vẫn không khớp (xem ảnh chụp màn hình) Bất kỳ ý tưởng nào tại sao điều này xảy ra? Tôi đã bỏ lỡ một cái gì đó? Tôi subclassed UITextField và ghi đè lên các phương pháp sau đây (không chắc chắn nó có liên quan, nhưng điều này dường như là phương pháp người có thể gây ra lỗi này):UITextField lớp con rối tung adjustFontSizeToWidth

- (CGRect)leftViewRectForBounds:(CGRect)bounds { 
CGRect leftViewRect = [super leftViewRectForBounds:bounds]; 
if ([self shouldShowLeftView] == YES) { 
    CGFloat newHeight = self.frame.size.height * 0.5f; 
    if (self.leftImage) { 
     leftViewRect.size.width = newHeight; 
    } 
    leftViewRect.origin.x = kMargins; 
    leftViewRect.origin.y = (self.frame.size.height - leftViewRect.size.height)/2.0f; 
} 
return leftViewRect; 
} 


- (CGRect)textRectForBounds:(CGRect)bounds { 
CGRect rectForBounds = [super textRectForBounds:bounds]; 

if ([self shouldShowLeftView] == YES) { 
    rectForBounds.origin.x += kMargins; 
    rectForBounds.size.width -= 2.0 * kMargins; 
} else { 
    rectForBounds.origin.x += kMargins/2.0; 
    rectForBounds.size.width -= 2.0 * (kMargins/2.0); 
} 
return rectForBounds; 
} 

- (CGRect)editingRectForBounds:(CGRect)bounds { 
CGRect rectForBounds = [super editingRectForBounds:bounds]; 

if ([self shouldShowLeftView] == YES) { 
    rectForBounds.origin.x += kMargins; 
    rectForBounds.size.width -= 2.0 * kMargins; 
} else { 
    rectForBounds.origin.x += kMargins/2.0; 
    rectForBounds.size.width -= 2.0 * (kMargins/2.0); 
} 
return rectForBounds; 
} 

placeholder not fitting in the screen

EDIT: Cập nhật, tôi cố gắng sử dụng this solution và điều chỉnh mã một chút để làm cho nó hoạt động cho trình giữ chỗ. Việc thay đổi kích thước phông chữ là tốt, nhưng giao diện người dùng bị rối loạn khi văn bản bị giảm, văn bản tự bù đắp ở bên trái, phía sau chế độ xem hình ảnh bên trái. Trên ảnh chụp màn hình, chúng ta có thể thấy rằng lề phải quá lớn và văn bản quá nhiều ở bên trái. Screenshot fail new try

+0

Có kích thước phông chữ tối thiểu của hệ thống. UITextField sẽ không thu nhỏ kích thước phông chữ như bạn mong đợi. – matt

+0

Kích thước phông chữ tối thiểu của tôi là 10 và trình giữ chỗ có phông chữ với 14pt thay vì 15 tôi đã cung cấp theo mặc định, có thể được tính toán sai. Đó là lý do tôi hỏi. – Loadex

Trả lời

1

Bạn không bỏ lỡ bất cứ điều gì - đây là một điều không minh bạch của iOS. Giá trị minimumFontSize dưới 14 dường như bị bỏ qua hoàn toàn theo số my answer cho một câu hỏi tương tự.

Đặt kích thước phông chữ gốc thành 300 và UITextField vẫn sẽ là 14 pt chứ không phải 10 pt.

14 là số ma thuật kỳ lạ; không có giấy tờ, nhưng có thể được sử dụng để duy trì khả năng đọc. Nếu chỉ nó có thể thấp hơn.

+0

... và tôi đoán 14 là kích thước phông chữ tối thiểu được đề cập. –

+0

@Cowrin Newall Cảm ơn câu trả lời của bạn! Tôi không biết về điều này. Tôi đã thử các giải pháp mà bạn đã đề cập trên câu trả lời khác của bạn, điều chỉnh nó một chút nhưng giải pháp này có vẻ lỗi và điều chỉnh font gây ra vị trí xấu gây ra bởi phương pháp táo. Khi tôi thay đổi kích thước văn bản của tôi, văn bản được vẽ phía sau hình ảnh bên trái của tôi. Bất kỳ ý tưởng tại sao/làm thế nào để sửa chữa nó? – Loadex

+0

Tôi không chắc chắn, nhưng trong Apple Docs nó nói không gọi 'textRectForBounds:' trực tiếp, và mã mẫu làm. Các ràng buộc của bạn có được thiết lập đúng không vv? Không hoàn toàn chắc chắn về vấn đề mới của bạn. –

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