同時設定 borderStyle 與 layer.cornerRadius 會導致邊框渲染衝突,出現斷裂現象。解決方式是移除預設樣式,改用 CALayer 繪製邊框。
UITextField *mobileNumberField = [[UITextField alloc] initWithFrame:CGRectMake(10, 195, 300, 41)];
mobileNumberField.delegate = self;
// 移除這行:mobileNumberField.borderStyle = UITextBorderStyleRoundedRect;
// 自訂外觀
[mobileNumberField setBackgroundColor:[UIColor whiteColor]];
[mobileNumberField.layer setBorderColor:[UIColor grayColor].CGColor];
[mobileNumberField.layer setBorderWidth:1.0];
[mobileNumberField.layer setCornerRadius:14.0f];
mobileNumberField.placeholder = @"Mobile Number";
[self.paymentsHomeView addSubview:mobileNumberField];
borderStyle 會啟用系統內建邊框繪製,與手動設定 layer 衝突。layer.borderColor、borderWidth、cornerRadius 可完全控制外觀。得到完整圓角、單一邊框、無斷裂的輸入框,符合設計稿需求。