2015-02-08 20 views
7

Làm thế nào một textField có thể được thay đổi kích cỡ dựa trên nội dung trong khi sử dụng bố cục tự động trong một ứng dụng iOS được viết bằng Swift?Thay đổi kích thước textField Dựa trên nội dung

Trường văn bản sẽ thay đổi kích thước khi cần thiết để phù hợp với nội dung khi lượt xem tải cũng như khi người dùng đang nhập.

Lý tưởng nhất, trường văn bản sẽ ngừng thay đổi kích thước tại một điểm nhất định, giả sử là 6 dòng và có thể cuộn được.

Trả lời

6

Bạn phải sử dụng một UITextView thay vì một UITextField

Sau đó, bạn có thể sử dụng phương pháp sizeThatFits.

Nhưng trước tiên bạn phải biết mức độ cao của một dòng. Bạn có thể nhận được thông tin rằng bằng cách sử dụng lineHeight:

var amountOfLinesToBeShown:CGFloat = 6 
var maxHeight:CGFloat = yourTextview.font.lineHeight * amountOfLinesToBeShown 

Sau đó, chỉ cần gọi phương thức siteThatFits bên trong phương pháp viewDidLoad của bạn và thiết lập maxHeight (line * 6) như bạn TextView-height:

yourTextview.sizeThatFits(CGSizeMake(yourTextview.frame.size.width, maxHeight)) 
+0

Tại sao bạn sử dụng 2 lần 'yourTextview.sizeThatFits (…)'? – milo526

+0

Bạn nói đúng. Tôi đã thay đổi rằng – Christian

+0

là có cách nào chúng ta có thể tăng số lượng các dòng của một UITextField? @Christian –

1

Swift 3

var textView : UITextView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    textView = UITextView() 
    textView.sizeThatFits(CGSize(width: textView.frame.size.width, height: textView.frame.size.height)) 
} 
Các vấn đề liên quan