UITextField - 圆角问题

iOS*_*iOS 22 iphone objective-c uitextfield ios ios5

我提出了我面临的问题.我正在以UITextField编程方式创建如下.

UItextField *mobileNumberField = [[UITextField alloc] initWithFrame:CGRectMake(10, 195, 300, 41)];
mobileNumberField.delegate = self;
mobileNumberField.borderStyle = UITextBorderStyleRoundedRect;
[mobileNumberField.layer setCornerRadius:14.0f];
mobileNumberField.placeholder = @"Mobile Number";
[self.paymentsHomeView addSubview:mobileNumberField];
Run Code Online (Sandbox Code Playgroud)

输出是附加图像.

在此输入图像描述

我不知道为什么它会在拐角处破裂.帮我修改我的文本字段,如下图所示.

在此输入图像描述

提前致谢..!

Par*_*shi 29

只需删除此行...

mobileNumberField.borderStyle = UITextBorderStyleRoundedRect;
Run Code Online (Sandbox Code Playgroud)

并添加此代码..

    [mobileNumberField setBackgroundColor:[UIColor whiteColor]];
    [mobileNumberField.layer setBorderColor:[UIColor grayColor].CGColor];
    [mobileNumberField.layer setBorderWidth:1.0];
Run Code Online (Sandbox Code Playgroud)

我希望这能帮到你..


Par*_*ram 11

在下面更新你的喜欢.

    UITextField *mobileNumberField = [[UITextField alloc] initWithFrame:CGRectMake(10, 195, 300, 41)];
    mobileNumberField.delegate = self;
    mobileNumberField.layer.borderWidth = 1.0f;
    mobileNumberField.layer.borderColor = [UIColor lightGrayColor].CGColor;
    mobileNumberField.
//    mobileNumberField.borderStyle = UITextBorderStyleRoundedRect;
    [mobileNumberField.layer setCornerRadius:14.0f];
    mobileNumberField.placeholder = @"Mobile Number";
    [self.paymentsHomeView addSubview:mobileNumberField];
Run Code Online (Sandbox Code Playgroud)


oya*_*lhi 6

切角的原因是因为文本字段有一个封闭的视图。当您设置角半径时,适用于该视图,因此内部文本字段的角似乎被切割 - 实际上它们甚至没有改变。

解决办法就是把UITextField里面的UIViewtextfield borderstyle设置为none。然后将边框和圆角半径规范应用到 uiview。请注意 borderColor,它与 UITextField borderColor 非常接近(即使不相同)。

截至撰写本文时,已在 Xcode 7.3.1、Swift 2.2、iOS 8 和 9 上进行测试和运行。

迅速:

textField.borderStyle = UITextBorderStyle.None
textBorderView.layer.cornerRadius = 5
textBorderView.layer.borderWidth = 1
textBorderView.layer.borderColor = UIColor.lightGrayColor().colorWithAlphaComponent(0.2).CGColor
Run Code Online (Sandbox Code Playgroud)


Mit*_*iti 6

textField.layer.cornerRadius=textfield.frame.size.height/2;

textField.clipsToBounds=YES;
Run Code Online (Sandbox Code Playgroud)