2016-04-22 10 views
3

UITextFieldの色を変更したいのですが、私が知っているように、TextFieldのRightViewプロパティにアクセスして同じことを達成できるだけでなく、同じことをする。UITextFieldクリアボタンの色を白色にカスタマイズする

しかし、いいえ、私はそのボタンの色だけを変更したいと思います。

誰かが私に同じことを助けることができますか?

以下は、UITextFieldのクリアボタンにアクセスするために書いたコードを表しています。

for (UIView *aSubview in self.view.subviews) { 
    for (UIView *bSubview in aSubview.subviews) { 
     if ([bSubview isKindOfClass:[UITextField class]]){ 
      for(UIView *v in bSubview.subviews) 
      { 
       if([v isKindOfClass:[UIButton class]]) 
       { 

       } 
      } 
     } 
    } 
} 
+0

を変更したいものを明確にしてくださいテキストフィールドの背景やボタンの色? –

+0

そのボタンの色を変更したいと思います。 –

+0

あなたはストーリーボードを使用していますか? –

答えて

4

、私はこの結論に来て、

UIButton *btnClear = [self.txtEmail valueForKey:@"_clearButton"]; 
UIImage *imageNormal = [btnClear imageForState:UIControlStateNormal]; 
UIGraphicsBeginImageContextWithOptions(imageNormal.size, NO, 0.0); 
CGContextRef context = UIGraphicsGetCurrentContext(); 

CGRect rect = (CGRect){ CGPointZero, imageNormal.size }; 
CGContextSetBlendMode(context, kCGBlendModeNormal); 
[imageNormal drawInRect:rect]; 

CGContextSetBlendMode(context, kCGBlendModeSourceIn); 
[[UIColor whiteColor] setFill]; 
CGContextFillRect(context, rect); 

UIImage *imageTinted = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
[btnClear setImage:imageTinted forState:UIControlStateNormal]; 
-2

それはあなたのために動作します。このコードを試してみてください。

yourbutton.backgroundColor = [UIColor whiteColor]; 

あなたは簡単に enter image description here

1

としてあなたUIButtonの外観を変更することができますストーリーボードを使用している場合、私はiOSアプリの開発に新しいですしかし、私は試してみましょう。次のコードを参照してください。

.hファイル:

#import <UIKit/UIKit.h> 


@interface TextFieldTint : UITextField 

-(void) setColorButtonClearHighlighted:(UIColor *)colorButtonClearHighlighted; 
-(void) setColorButtonClearNormal:(UIColor *)colorButtonClearNormal; 

@end 

.mファイル:すべてのあなたの答えから

#import "TextFieldTint.h" 

@interface TextFieldTint() 

@property (nonatomic,strong) UIColor *colorButtonClearHighlighted; 
@property (nonatomic,strong) UIColor *colorButtonClearNormal; 

@property (nonatomic,strong) UIImage *imageButtonClearHighlighted; 
@property (nonatomic,strong) UIImage *imageButtonClearNormal; 


@end 

@implementation TextFieldTint 


-(void) layoutSubviews 
{ 
    [super layoutSubviews]; 
    [self tintButtonClear]; 
} 

-(void) setColorButtonClearHighlighted:(UIColor *)colorButtonClearHighlighted 
{ 
    _colorButtonClearHighlighted = colorButtonClearHighlighted; 
} 

-(void) setColorButtonClearNormal:(UIColor *)colorButtonClearNormal 
{ 
    _colorButtonClearNormal = colorButtonClearNormal; 
} 

-(UIButton *) buttonClear 
{ 
    for(UIView *v in self.subviews) 
    { 
     if([v isKindOfClass:[UIButton class]]) 
     { 
      UIButton *buttonClear = (UIButton *) v; 
      return buttonClear; 
     } 
    } 
    return nil; 
} 



-(void) tintButtonClear 
{ 
    UIButton *buttonClear = [self buttonClear]; 

    if(self.colorButtonClearNormal && self.colorButtonClearHighlighted && buttonClear) 
    { 
     if(!self.imageButtonClearHighlighted) 
     { 
      UIImage *imageHighlighted = [buttonClear imageForState:UIControlStateHighlighted]; 
      self.imageButtonClearHighlighted = [[self class] imageWithImage:imageHighlighted 
                    tintColor:self.colorButtonClearHighlighted]; 
     } 
     if(!self.imageButtonClearNormal) 
     { 
      UIImage *imageNormal = [buttonClear imageForState:UIControlStateNormal]; 
      self.imageButtonClearNormal = [[self class] imageWithImage:imageNormal 
                  tintColor:self.colorButtonClearNormal]; 
     } 

     if(self.imageButtonClearHighlighted && self.imageButtonClearNormal) 
     { 
      [buttonClear setImage:self.imageButtonClearHighlighted forState:UIControlStateHighlighted]; 
      [buttonClear setImage:self.imageButtonClearNormal forState:UIControlStateNormal]; 
     } 
    } 
} 


+ (UIImage *) imageWithImage:(UIImage *)image tintColor:(UIColor *)tintColor 
{ 
    UIGraphicsBeginImageContextWithOptions(image.size, NO, 0.0); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGRect rect = (CGRect){ CGPointZero, image.size }; 
    CGContextSetBlendMode(context, kCGBlendModeNormal); 
    [image drawInRect:rect]; 

    CGContextSetBlendMode(context, kCGBlendModeSourceIn); 
    [tintColor setFill]; 
    CGContextFillRect(context, rect); 

    UIImage *imageTinted = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return imageTinted; 
} 
@end 
関連する問題