关于重写UITextField的问题

   今天重写了一个UITextField,对于以下几个方面做一个总结:

1、在设置UITextFieldleftViewrightView时,经常需要根据实际的UI设计调整位置,例如系统本身的rightView紧贴着textField右侧,这样不太好看,这里有两种解决方法,需要根据rightView的样式决定来使用哪一种。

 

/** 重写设置rigntView的位置函数 */

- (CGRect)rightViewRectForBounds:(CGRect)bounds

{

    CGRect rect = [super rightViewRectForBounds:bounds];

    rect.origin.x -= 10;

    return rect;

}

    该方法使得rightView距离textField右侧有了10像素的距离。

 

  还有一种方法比较简单,但是有限制:

view.contentMode = UIViewContentModeCenter;

    就是设置contentModecenter,并且将rightView(自定义控件)的宽度比原来大一些,越大距离右侧越远。

    这种方法对于设置没有背景或者背景色与textField一致的,有边框也不可以。因为该方法实际上并没有改变rightViewtextField的距离,而是将rightView撑大,显得里面的文字或图片与textField有一段距离。


    2、另外我们在开发中经常因为文本框空值或者输入错误对文本框做一些提醒操作,下面是控件抖动效果

// 控件抖动效果

-(void)shakeView:(UIView*)viewToShake

{

    CGFloat t =2.0;

    CGAffineTransform translateRight = CGAffineTransformTranslate(CGAffineTransformIdentity, t,0.0);

    CGAffineTransform translateLeft =CGAffineTransformTranslate(CGAffineTransformIdentity,-t,0.0);

    

    viewToShake.transform = translateLeft;

    

    [UIView animateWithDuration:0.07 delay:0.0 options:UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeat animations:^{

        [UIView setAnimationRepeatCount:2.0];

        viewToShake.transform = translateRight;

    } completion:^(BOOL finished){

        if(finished){

            [UIView animateWithDuration:0.05 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{

                viewToShake.transform =CGAffineTransformIdentity;

            } completion:NULL];

        }

    }];

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值