zoukankan      html  css  js  c++  java
  • 自定义视图

    自定义视图的出现,是为了把众多的view放在一个view里,创建的时候,只要创建这个view就好。这样能用尽量少的代码,进行更多更快的布局。

    自定义视图,遵循以下几个步骤:

    1、创建一个类,继承于UIView,重新定义初始化方法,

    - (instancetype)initWithFrame:(CGRect)frame

    这个方法里,[ self setupView ]调用一个我们自定义的私有方法,来实现几个UILabel+UITextField等组合的布局。

    2、在appdelegate中创建这个用于布局的类。

    LTView.h

    声明两个属性分别为UILabel和UITextField类型的属性

    #import <UIKit/UIKit.h>

     

    @interface LTView3 : UIView

     

    @property(nonatomic,retain)UILabel *aLabel;

    @property(nonatomic,retain)UITextField *aTextField;

     

    @end

    LTView.m

    重写初始化方法,在初始化方法内,对两个属性进行初始化,完成内部的布局

    #import "LTView.h"

     

    @implementation LTView

     

    - (instancetype)initWithFrame:(CGRect)frame{

        self = [super initWithFrame:frame];

        if (self) {

           

            [self p_setupView];

    }

        return self;

    }

    //  私有方法

    // 把初始化方法中的视图布局搬到私有方法中

    - (void)p_setupView{

        self.aLabel = [[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 60, CGRectGetHeight(self.frame))] autorelease];

        self.aLabel.backgroundColor = [UIColor cyanColor];

        [self addSubview:_aLabel];

       

        self.aTextField = [[[UITextField alloc]initWithFrame:CGRectMake(CGRectGetMaxX(self.aLabel.frame)+20, CGRectGetMinY(self.aLabel.frame),CGRectGetWidth(self.frame)- CGRectGetWidth(self.aLabel.frame)-20 , CGRectGetHeight(self.aLabel.frame))] autorelease];

        self.aTextField.backgroundColor = [UIColor yellowColor];

        [self addSubview:_aTextField];

    }

    - (void)dealloc{

        [self.aTextField release];

        [self.aLabel release];

        [super dealloc];

    }

    @end

     

    AppDelegate.m

    这样创建一个UILabel和一个UITextField这两个视图的布局,只需要创建一个LTView类的对象即可。

     // 创建LTView

        LTView *ltv1 = [[LTView alloc]initWithFrame:CGRectMake(50, 50, 300, 50)];

        ltv1.backgroundColor = [UIColor blueColor];

        [self.window addSubview:ltv1];  

        // 释放

        [ltv1 release];

        ltv1 = nil;

     

  • 相关阅读:
    js右击事件
    css中的特殊居中
    js实现轮播图
    css画三角形
    Elasticsearch-5.5.0安装head插件
    Elasticsearch报错:NodeDisconnectedException[[][IP:9300][cluster:monitor/nodes/liveness] disc
    mybatis foreach多次遍历问题
    Java使用File.separator解决Win和Linux的路径问题
    WebStorm 代码提示快捷键
    springmvc 前台传日期(字符串) 后台用date接收封装失败(请求400)
  • 原文地址:https://www.cnblogs.com/Coder-GT/p/4866361.html
Copyright © 2011-2022 走看看