Đặt phần đệm cho UITextField với UITextBorderStyleNone: Swift
Dựa trên câu trả lời được bình chọn nhiều nhất của @Evil Trout, tôi đã tạo một phương thức tùy chỉnh trong lớp ViewContoder của mình, như được hiển thị dưới đây:
- (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]];
}
Bây giờ tôi có thể gọi phương thức đó bên trong (phương thức viewDidLoad) và gửi bất kỳ TextField nào của tôi đến phương thức đó và thêm phần đệm cho cả bên phải và bên trái, và đưa ra màu văn bản và màu nền bằng cách chỉ viết một dòng mã, như sau:
[self modifyTextField:self.firstNameTxtFld];
Điều này đã hoạt động hoàn hảo trên iOS 7! Tôi biết rằng việc thêm quá nhiều Lượt xem có thể khiến lớp này nặng hơn một chút. Nhưng khi lo ngại về sự khó khăn trong các giải pháp khác, tôi thấy mình thiên vị hơn với phương pháp này và linh hoạt hơn khi sử dụng cách này. ;)
Cảm ơn Hack "Evil Trout"! (cây cung)
Tôi nghĩ rằng tôi nên cập nhật đoạn mã câu trả lời này với Swift:
Vì Swift cho phép chúng ta viết các phần mở rộng cho các lớp hiện có, hãy viết nó theo cách đó.
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()
}
}
Sử dụng:
self.firstNameTxtFld.addPaddingToTextField()
Hy vọng điều này sẽ hữu ích cho người khác ngoài kia!
Chúc mừng!