2012-12-16 23 views
11

की गणना करें मैं UIButton के उदाहरण के साथ UITextField के उदाहरण की बेसलाइन को प्रोग्रामेटिक रूप से संरेखित करने का प्रयास कर रहा हूं। मैं वर्तमान में here वर्णित इस गणना को इसी तरह से संभालने में काम कर रहा हूं, लेकिन UITextField के साथ सामग्री के लिए ऑफसेट हो सकता है। कोई विचार मैं UITextField या इससे भी बेहतर के भीतर टेक्स्ट स्थिति कैसे प्राप्त कर सकता हूं, क्या बेसलाइन को संरेखित करने का एक और आसान तरीका है?UITextField बेसलाइन स्थिति

उत्तर

0

मेरे अनुभव में, UITextField वास्तव में पाठ के चारों ओर कोई ऑफसेट नहीं है, UIButton के विपरीत। भले ही, तुम दोनों नियंत्रण में सही पाठ बॉक्स यह पता लगाने कर सकते हैं:

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