zoukankan      html  css  js  c++  java
  • UITextField 的重写

           在很多产品设计的时候,产品设计人员设计出来的输入框总会要求,文字的内容距离做边框多少像素,编辑区域的其实点,距离左边多少像素,很多人绝的难以适应!其实这些都不存在很大的技术难度,一下这些方式都可以达到这样的一个目的:

      1.边框用一个图片,然后在图片上添加隐形的UITextFied,更改输入框的大小,位置,这样通过障眼法就可以达到产品设计的要求。

      2.UITextField 是有leftView这样的一个功能,那么就可以在左边添加一个全透明的view.用以边框个输入区域的隔离。也可以达到对应的产品设计要求

      3.最好的一种方式,当然是一劳永逸的方式,也就是重写UITextField.通过重写其对应的方法,然后在后续的过程中,可以很方便的使用,在这里主要是描述这样的一个写法,。

      示例的要求主要如下:输入区域必须距离做边框的距离为10像素。重写UITextFiled.如下:

     

    #import <UIKit/UIKit.h>

     

    @interface HJUITextField : UITextField

     

    @end

     

    #import "HJUITextField.h"

     

    @implementation HJUITextField

     

    - (id)initWithFrame:(CGRect)frame

    {

        self = [super initWithFrame:frame];

        if (self) {

            // Initialization code

        }

        returnself;

    }

     

     

    -(CGRect)textRectForBounds:(CGRect)bounds{

        return CGRectInset(bounds, 10, 0);

    }

     

    -(CGRect)editingRectForBounds:(CGRect)bounds{

        return CGRectInset(bounds, 10, 0);

    }

     

    @end

    从上面可以看出,我们主要是重写了UITextField的两个方法,分别为:

    -(CGRect)textRectForBounds:(CGRect)bounds

    -(CGRect)editingRectForBounds:(CGRect)bounds

     

    在两个方法中我们分别返回编辑的区域和文本显示的区域,通过重写这两个方法很好的满足了产品设计的要求。当然UITextField还有其它的一些方法。如

     (CGRect)borderRectForBounds:(CGRect)bounds;

    - (CGRect)textRectForBounds:(CGRect)bounds;

    - (CGRect)placeholderRectForBounds:(CGRect)bounds;

    - (CGRect)editingRectForBounds:(CGRect)bounds;

    - (CGRect)clearButtonRectForBounds:(CGRect)bounds;

    - (CGRect)leftViewRectForBounds:(CGRect)bounds;

    - (CGRect)rightViewRectForBounds:(CGRect)bounds;

     

    - (void)drawTextInRect:(CGRect)rect;

    - (void)drawPlaceholderInRect:(CGRect)rect;

    通过重写这些方法,对应的一些特殊的产品设计要求基本上都能实现,这种方法的好处在于,一个产品在视觉上很多时候都是统一的。也就是说在产品开发的初期,如果重写这些方法,在后续的使用过程中,很方便的重复使用

     

     

     

     

     

  • 相关阅读:
    边缘引导插值/方向卷积插值
    cout显示Mat类对象报错Access Violation
    图像特征点匹配C代码
    TF-IDF(词频-逆向文件频率)用于文字分类
    Jsp中如何通过Jsp调用Java类中的方法
    根据wsdl文件,soupUI生成webservice客户端代码
    根据wsdl,axis2工具生成客户端代码
    根据wsdl,apache cxf的wsdl2java工具生成客户端、服务端代码
    根据wsdl,基于wsimport生成代码的客户端
    Mysql截取和拆分字符串函数用法
  • 原文地址:https://www.cnblogs.com/xishui2011/p/3738266.html
Copyright © 2011-2022 走看看