zoukankan      html  css  js  c++  java
  • UITextField设置leftView的Insets

    Insets就是css中的padding

    我们给UITextField设置了leftView,目的是在文本输入框左側显示一个图标。可是在ios7里,这个图标会紧紧地挨着TextField的左边框,非常不美观,所以就希望设置一个Insets。可是直接设置ImageView的bounds不行,须要用以下这种方法:

    @interface YLSTextField : UITextField
    
    -(id)initWithFrame:(CGRect)frame Icon:(UIImageView*)icon;
    
    @end

    @implementation YLSTextField
    
    -(id)initWithFrame:(CGRect)frame Icon:(UIImageView*)icon
    {
        self = [super initWithFrame:frame];
        if (self) {
            self.leftView = icon;
            self.leftViewMode = UITextFieldViewModeAlways;
        }
        return self;
    }
    
    -(CGRect) leftViewRectForBounds:(CGRect)bounds {
        CGRect iconRect = [super leftViewRectForBounds:bounds];
        iconRect.origin.x += 10;// 右偏10
        return iconRect;
    }
    
    @end

    UIImage *usernameImage = [UIImage imageNamed:@"user"];
    UIImageView *usernameIcon = [[UIImageView alloc] initWithImage:usernameImage];
    usernameIcon.frame = CGRectMake(0, 0, 20, 20);
            
    self.username = [[YLSTextField alloc] initWithFrame:CGRectMake(0, 0, 240, 30) Icon:usernameIcon];
    self.username.placeholder = @"用户名";
    self.username.borderStyle = UITextBorderStyleRoundedRect;
    self.username.clearButtonMode = UITextFieldViewModeWhileEditing;
    [self.username setKeyboardType:UIKeyboardTypeNumberPad];

    关键就是定义UITextField的子类,并覆盖其leftViewRectForBounds方法

  • 相关阅读:
    Markdown自动生成目录
    defer使用小结
    RESTful API设计的点
    总结下数据库的命名规范
    go module学习笔记
    golang环境安装和配置
    jenkins环境搭建&配置(二)
    mac环境搭建selenium
    sed命令
    测试工作遇到的自动补0
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4479851.html
Copyright © 2011-2022 走看看