2012-12-16 18 views
11

UITextField örneğinin taban çizgisini UIButton örneğiyle programsal olarak hizalamaya çalışıyorum. Ben şu anda bu hesaplama here açıklanan benzer şekilde ele alıyorum, ancak UITextField ile içeriğin bir ofset olabilir. Herhangi bir fikir, UITextField veya daha da iyisi içinde metin konumunu nasıl alabilirim, temel çizgileri hizalamak için daha basit bir yol var mı?UITextField temel konumunu hesaplayın

cevap

0

Benim deneyimime göre, UIButton aksine, UITextField, metin etrafında herhangi bir sapma aslında yoktur. Ne olursa olsun, her iki kontrollerde kesin metin kutusu anlayabiliriz:

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