2014-12-31 18 views
6

Làm cách nào tôi có thể đặt Tự động thay đổi kích thước trong trường văn bản trong iOS?iOS UITextField Tự động thay đổi kích thước phù hợp với nội dung

helloWorld.m

self.TextFieldExample.text = @"HELLO WORLD HELLO WORLD HELLO WORLD HELLO WORLD";

Bây giờ là:

HELLO WORLD Hello ...

Đúng:

HELLO WORLD Hello W ORLD HELLO WORLD HELLO WORLD

Thực tiễn tốt nhất trong trường hợp này là gì?

+1

Bạn có ý nghĩa giống như nội dung được trả lời trong bài đăng này không? http://stackoverflow.com/questions/50467/how-do-i-size-a-uitextview-to-its-content – user1390486

+0

Không rõ ràng. Bạn có muốn trường văn bản sử dụng phông chữ nhỏ hơn để vừa với văn bản trong chiều rộng của nó hay bạn muốn trường văn bản rộng hơn để vừa với văn bản của nó? – rmaddy

+0

user1390486 bài đăng này hoạt động, nhưng không hoàn toàn ... thay đổi kích thước trường văn bản chỉ trong một dòng. –

Trả lời

2

Với UITextField, văn bản phải phù hợp trên cùng một dòng và không thể quấn .

Bạn có hai lựa chọn:

  1. Shrink phông chữ để vừa trên một dòng:

    self.TextFieldExample.adjustsFontSizeToFitWidth = YES; self.TextFieldExample.minimumFontSize = 10.0; //Optionally specify min size

  2. Sử dụng UITextView để cho phép gói văn bản:

    Xem câu trả lời này: How to create a multiline UITextfield?

p.s. Per the style guide, "Properties nên lạc đà hợp với dẫn lời là chữ thường.", Do đó bạn nên đổi tên var của bạn để self.textFieldExample

+0

Cảm ơn bạn đã phản hồi điểm 2 là cách, nhưng bạn có biết ... có thể tăng chiều cao theo số lượng văn bản tự động không ?? –

+0

sau khi trường văn bản mất tiêu điểm và cố gắng chỉnh sửa kích thước lại sẽ được đặt thành kích thước tối thiểu = 10 tiếc là giải pháp này không hoạt động với tôi :( –

7

Bạn nên thêm một hành động thực hiện bởi các textField loại Editing Changed và bên trong hành động này bạn nên thêm [self.textField sizeToFit]; như thế này:

- (IBAction)textChanged:(UITextField *)sender { 

    [self.textField sizeToFit]; 
} 

Bằng cách này mỗi khi nội dung của Text Field của bạn thay đổi nó sẽ thực hiện hành động và nó sẽ thay đổi kích thước cho độ dài của văn bản của bạn.

Và nếu bạn muốn các văn bản để thay đổi kích cỡ để phù hợp với chiều rộng của TextField, bạn có thể làm điều đó trong các thuộc tính thanh tra của các kịch bản: http://i.stack.imgur.com/udVlk.png

+1

Câu hỏi đặt ra là về trường văn bản chứ không phải nhãn. – rmaddy

+1

Tôi đã cập nhật câu trả lời của mình! @rmaddy –

+0

cảm ơn phản hồi của bạn Santiago Fabregat, nhưng ý tưởng được thực hiện nhiều dòng, giống như UITextView, tôi nghĩ là giải pháp tốt nhất trong trường hợp này là –

0

Swift:

self.TextFieldExample.adjustsFontSizeToFitWidth = true 
self.TextFieldExample.minimumFontSize = 10.0 
0

Trong trường hợp của tôi, tôi muốn font là có Cùng kích cỡ. Tôi đặt giới hạn độ rộng textField thành> = 10 và nó chỉ hoạt động tốt trên iOS 9, 10, 11.

Đối với iOS 11, tính năng này thậm chí còn hoạt động trong khi chỉnh sửa văn bản.

Để thực hiện công việc này trong khi chỉnh sửa văn bản trên iOS 9 và 10, tôi đã xử lý thêm một phương pháp bằng cách đăng ký sự kiện textDidChange.

//Swift 3 Sample 

//In viewDidLoad 
adjustableTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) 


@objc func textFieldDidChange(_ textField: UITextField) { 
    adjustableTextField.resignFirstResponder() 
    adjustableTextField.becomeFirstResponder() 
} 
Các vấn đề liên quan