UITextField 預設文字貼左邊框顯示,視覺不佳。無背景圖片的邊框樣式下尤為明顯,需增加左側內邊距。
UITextField 提供 leftView / rightView 機制,插入一個透明 UIView 即可撐開內邊距,無需子類化或繪製覆寫。
// 建立寬度 10pt 的透明視圖作為左側間距
UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 0)];
paddingView.backgroundColor = [UIColor clearColor];
textField.leftView = paddingView;
textField.leftViewMode = UITextFieldViewModeAlways; // 永遠顯示
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; // 垂直置中
let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: 0))
paddingView.backgroundColor = .clear
textField.leftView = paddingView
textField.leftViewMode = .always
textField.contentVerticalAlignment = .center
leftView 可放 UIImageView 顯示搜尋圖示、國家旗幟等。paddingView.frame.size.width,適配 Dynamic Type。rightView 可放清除按鈕、密碼顯示切換等。textRectForBounds::需子類化,維護成本高,易與選取/編輯框衝突。textField.text = " " + input 會汙染資料模型,影響驗證/傳輸。leftViewMode:預設 UITextFieldViewModeNever,不設定不會顯示。善用 leftView/rightView 是 iOS 官方推薦、零副作用的內邊距解決方案,程式碼簡潔且相容所有 iOS 版本。