web-dev-qa-db-ja.com

UITextField-角の丸い問題

私が直面している問題を前に進めます。以下のようにプログラムで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];

出力は添付画像です。

enter image description here

なぜそれがコーナーで壊れているのか分かりません。下に添付されている画像のようにテキストフィールドを修正するのを手伝ってください。

enter image description here

前もって感謝します..!

22
iOS

この行を削除してください...

mobileNumberField.borderStyle = UITextBorderStyleRoundedRect;

このコードも追加します。

    [mobileNumberField setBackgroundColor:[UIColor whiteColor]];
    [mobileNumberField.layer setBorderColor:[UIColor grayColor].CGColor];
    [mobileNumberField.layer setBorderWidth:1.0];

これがお役に立てば幸いです。

29
Paras Joshi

以下のように更新してください。

    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];
textField.layer.cornerRadius=textfield.frame.size.height/2;

textField.clipsToBounds=YES;
6
Miti

角が切り取られているのは、テキストフィールドを囲むビューがあるためです。角の半径を設定すると、そのビューに適用されるため、内側のテキストフィールドの角が切り取られているように見えます-実際には変更されていません。

解決策は、UITextFieldUIView内に配置し、テキストフィールドのボーダースタイルをなしに設定することです。次に、境界線とコーナーの半径指定をuiviewに適用します。同じではないにしても、UITextField borderColorに非常に近い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
4
oyalhi

ここにあなたの問題の解決策があります

UITextField * txtField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 50)];

[txtField setBorderStyle:UITextBorderStyleNone];

[txtField.layer setMasksToBounds:YES];
[txtField.layer setCornerRadius:10.0f];
[txtField.layer setBorderColor:[[UIColor lightGrayColor]CGColor]];
[txtField.layer setBorderWidth:1];
[txtField setTextAlignment:UITextAlignmentCenter];
[txtField setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
[self.view addSubview:txtField];
1
junaidsidhu

Swift 3ソリューション:

ボーダーとコーナーの半径をSwiftの任意のレイヤーに設定する別の関数を作成しました。ビューのレイヤー、ボーダーの幅、コーナーの半径とボーダーの色を次の関数に渡すだけです。

` func setBorderAndCornerRadius(layer: CALayer, width: CGFloat, radius: CGFloat,color : UIColor ) {
        layer.borderColor = color.cgColor
        layer.borderWidth = width
        layer.cornerRadius = radius
        layer.masksToBounds = true
    }

`

0
Prasad09