2012-12-16 10 views
11

Tôi đang cố căn chỉnh đường cơ sở của phiên bản UITextField với phiên bản UIButton. Tôi hiện đang xử lý tính toán này theo cách tương tự được mô tả here, nhưng với UITextField có thể có một bù đắp cho nội dung. Bất kỳ ý tưởng làm thế nào tôi có thể có được vị trí văn bản trong vòng UITextField hoặc thậm chí tốt hơn, là có một cách đơn giản hơn để sắp xếp các đường cơ sở?Tính vị trí đường cơ sở UITextField

Trả lời

0

Theo kinh nghiệm của tôi, UITextField không thực sự có bất kỳ khoảng trống nào xung quanh văn bản, không giống như UIButton. Bất kể, bạn có thể tìm ra các hộp văn bản chính xác trong cả hai điều khiển:

let textField = UITextField() 
//... size the field, e.g. textField.sizeToFit() 

let button = UIButton() 
//... size the button, e.g. button.sizeToFit() 

// Compute the target offset between tops (frame.origin.y). 
let buttonBox = button.contentRectForBounds(button.bounds) 
let buttonBaseline = buttonBox.origin.y + button.titleLabel!.font.ascender 

let textFieldBox = textField.textRectForBounds(textField.bounds) 
let textFieldBaseline = textFieldBox.origin.y + textField.font!.ascender 

let offset = buttonBaseline - textFieldBaseline 

//... position button, e.g., button.frame = CGRect(...) 

textField.frame = CGRect(
    origin: CGPoint(x: button.frame.maxX, y: button.frame.origin.y + offset), 
    size: textField.bounds.size) 

Example alignment with different font sizes