ตั้งค่าช่องว่างภายในสำหรับ UITextField ด้วย UITextBorderStyleNone: Swift
จากคำตอบที่ได้รับการโหวตมากที่สุดของ @Evil Trout ฉันได้สร้างวิธีการที่กำหนดเองในชั้นเรียน ViewController ของฉันเช่นที่แสดงร้อง:
- (void) modifyTextField:(UITextField *)textField
{
UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)];
textField.leftView = paddingView;
textField.leftViewMode = UITextFieldViewModeAlways;
textField.rightView = paddingView;
textField.rightViewMode = UITextFieldViewModeAlways;
[textField setBackgroundColor:[UIColor whiteColor]];
[textField setTextColor:[UIColor blackColor]];
}
ตอนนี้ฉันสามารถเรียกใช้เมธอดนั้น (เมธอด viewDidLoad) และส่ง TextFields ใด ๆ ของฉันไปที่เมธอดนั้นและเพิ่มการเติมทั้งด้านขวาและซ้ายและให้สีข้อความและพื้นหลังโดยการเขียนโค้ดเพียงบรรทัดเดียวดังนี้:
[self modifyTextField:self.firstNameTxtFld];
มันทำงานได้อย่างสมบูรณ์บน iOS 7! ฉันรู้ว่าการเพิ่มจำนวนการดูมากเกินไปอาจทำให้ชั้นเรียนนี้หนักขึ้น แต่เมื่อกังวลเกี่ยวกับความยากลำบากในการแก้ปัญหาอื่น ๆ ฉันพบว่าตนเองมีอคติกับวิธีนี้มากขึ้นและมีความยืดหยุ่นมากขึ้นเมื่อใช้วิธีนี้ ;)
ขอบคุณสำหรับการแฮ็ค "Evil Trout"! (คันธนู)
ฉันคิดว่าฉันควรอัปเดตข้อมูลโค้ดของคำตอบนี้ด้วย Swift:
เนื่องจาก Swift อนุญาตให้เราเขียนส่วนขยายสำหรับคลาสที่มีอยู่เรามาเขียนในแบบนั้น
extension UITextField {
func addPaddingToTextField() {
let paddingView: UIView = UIView.init(frame: CGRectMake(0, 0, 8, 20))
self.leftView = paddingView;
self.leftViewMode = .Always;
self.rightView = paddingView;
self.rightViewMode = .Always;
self.backgroundColor = UIColor.whiteColor()
self.textColor = UIColor.blackColor()
}
}
การใช้งาน:
self.firstNameTxtFld.addPaddingToTextField()
หวังว่านี่จะเป็นประโยชน์กับคนอื่นที่นั่น!
ไชโย!