UITextField con esquinas networkingondeadas solo en la parte superior

Quiero implementar un UITextField que tiene esquinas networkingondeadas solo en la esquina superior izquierda y superior derecha.

Sé sobre el método setter setCornerRadius: que es una opción pnetworkingeterminada de UITextField, pero esta opción solo me permite hacer las cuatro esquinas de la ronda txtfield, pero solo quiero que las esquinas en la parte superior sean networkingondas.

Ahora estoy jugando por horas, he leído doc docs de Appple una docena de veces, pero aún no puedo saber por qué mi código no funciona:

- (id) init { // init elements UITextField *txt_password = [[UITextField alloc] init]; UIView *txt_password_paddingVc = [[UIView alloc] initWithFrame:CGRectMake(0,0,10,35)]; // configure txtfield [txt_password setSecureTextEntry:YES]; [txt_password setDelegate:self]; [txt_password setTag:100]; [txt_password setPlaceholder:t(@"App Password")]; [txt_password setLeftView:txt_password_paddingVc]; [txt_password setRightView:txt_password_paddingVc]; [txt_password setBackgroundColor:[UIColor whiteColor]]; [txt_password setLeftViewMode:UITextFieldViewModeAlways]; [txt_password setRightViewMode:UITextFieldViewModeAlways]; [txt_password setTranslatesAutoresizingMaskIntoConstraints:NO]; [txt_password setAutocapitalizationType:UITextAutocapitalizationTypeNone]; [txt_password setAutocorrectionType:UITextAutocorrectionTypeNo]; [txt_password.layer setBorderColor:[UIColor colorWithRed:228/255.0 green:228/255.0 blue:228/255.0 alpha:1].CGColor]; [txt_password.layer setBorderWidth:1.0f]; [txt_password.layer setShadowOpacity:0.0]; [txt_password.layer setMasksToBounds:YES]; // make round corners for txtfield CAShapeLayer *passwordMaskLayer = [[CAShapeLayer alloc] init]; UIBezierPath *passwordMaskPathWithRadiusTop = [UIBezierPath bezierPathWithRoundedRect:txt_password.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) cornerRadii:CGSizeMake(5.0, 5.0)]; passwordMaskLayer.frame = txt_password.bounds; passwordMaskLayer.path = passwordMaskPathWithRadiusTop.CGPath; passwordMaskLayer.fillColor = [UIColor whiteColor].CGColor; [txt_password.layer.mask setMask:passwordMaskLayer]; // add txtfield to view [self.view addSubview:txt_password]; return self; } 

La línea:

 [txt_password.layer.mask setMask:passwordMaskLayer]; 

Debiera ser:

 [txt_password.layer setMask:passwordMaskLayer]; 

Puedes probar esta. Espero que esto ayude.

 -(void)CustomizeTextField:(UITextField *)myTextField { CGRect rect = myTextField.bounds; UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:UIRectCornerTopLeft |UIRectCornerTopRight cornerRadii:CGSizeMake(6.0, 6.0)]; CAShapeLayer *layers = [CAShapeLayer layer]; layers.frame = rect; layers.path = path.CGPath; myTextField.layer.mask = layers; }