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;

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

     

     

     

     

     

  • 相关阅读:
    按钮组件如何处理点击事件(将原生事件绑定到自定义组件)
    一个简单的transition动画
    根据路由记录(利用matched)动态生成面包屑导航
    assets和static的异同
    Ceph集群概念以及部署
    腾讯质量效能提升最佳实践:智能自动化测试探索和建设
    腾讯WeTest压测大师通过中国计量科学研究院测试认证,获国家级权威认可
    新办公司每年费用
    2
    Leetcode刷题第三题 无重复字符的最长子串
  • 原文地址:https://www.cnblogs.com/xishui2011/p/3738266.html
Copyright © 2011-2022 走看看