博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS之xib创建view、initWithCoder、awakeFromNib
阅读量:4288 次
发布时间:2019-05-27

本文共 1734 字,大约阅读时间需要 5 分钟。

=====和xib绑定的View

-(instancetype)initWithFrame:(CGRect)frame{

    if(self==[superinitWithFrame:frame]){

       self= [[[NSBundlemainBundle] loadNibNamed:@"LYHomeGuanggaoTJVC"owner:selfoptions:nil]lastObject];

        self.frame=frame;

    }

    return self;

}

- (void)awakeFromNib

{

    [superawakeFromNib];

   

  [selfinitView];

}

//设置文字的位置

- (void)contentSizeToFits

{

    //先判断一下有没有文字(没文字就没必要设置居中了)

    if([self.activityContenttv.textlength]>0)

    {

        //textView的contentSize属性

        CGSize contentSize = self.activityContenttv.contentSize;

        //textView的内边距属性

        UIEdgeInsets offset;

        CGSize newSize = contentSize;

        

        //如果文字内容高度没有超过textView的高度

        if(contentSize.height <=self.activityContenttv.frame.size.height)

        {

            //textView的高度减去文字高度除以2就是Y方向的偏移量,也就是textView的上内边距

            CGFloat offsetY = (self.activityContenttv.frame.size.height - contentSize.height)/2;

            offset = UIEdgeInsetsMake(offsetY,0, 0, 0);

        }

        else         //如果文字高度超出textView的高度

        {

            newSize = self.activityContenttv.frame.size;

            offset = UIEdgeInsetsZero;

            CGFloat fontSize = 18;

            

            //通过一个while循环,设置textView的文字大小,使内容不超过整个textView的高度(这个根据需要可以自己设置)

            while (contentSize.height >self.activityContenttv.frame.size.height)

            {

                [self.activityContenttvsetFont:[UIFontfontWithName:@"Helvetica Neue"size:fontSize--]];

                contentSize = self.activityContenttv.contentSize;

            }

            newSize = contentSize;

        }

        

        //根据前面计算设置textView的ContentSize和Y方向偏移量

        [self.activityContenttvsetContentSize:newSize];

        [self.activityContenttvsetContentInset:offset];

        

    }

}

 

-(void)initView{

 }

==========调用:

 LYHomeGuanggaoTJVC *guanggao;

   

        guanggao= [[LYHomeGuanggaoTJVC alloc]initWithFrame:CGRectMake(0,0, 320, HEIGHT)];

        

 

initWithCoder、awakeFromNib、initWithFrame方法

  • 使用从Xib中加载UIView,会调用initWithCoder
  • 从沙盒中解档自定义对象,需要重写initWithCoder
  • 用代码创建UIView,会调用initWithFrame
  • 区别:initWithCoder在开始解析一个文件时调用,不管时Xib还是归档文件,awakeFromNib在xib加载完毕时调用

转载地址:http://mjmgi.baihongyu.com/

你可能感兴趣的文章
50个sql语句
查看>>
MYSQL sql 语句性能分析
查看>>
C++操作Redis数据库
查看>>
python yield用法
查看>>
python pipe模块用法
查看>>
安装完 MySQL 后必须调整的 10 项配置
查看>>
开发者必备的 12 个 JavaScript 库
查看>>
http错误码
查看>>
python 多线程
查看>>
sipp命令 各参数含义
查看>>
搜集的动植物分类、检索网站
查看>>
ffmpeg源码分析之媒体打开过程
查看>>
Ubuntu/centos/redhat/SUSE sipp安装(带rtp支持,3.5.1版本)
查看>>
周鸿祎:很多程序员聪明,但我一看就知道他不会成功
查看>>
编译程序遇到问题 relocation R_X86_64_32 against `.rodata' can not be used when making a shared object;
查看>>
Const指针 、 指向const的指针 、引用、指针
查看>>
GDB调试命令
查看>>
常见数据类型的字节数
查看>>
gcc/g++ 编译常见问题
查看>>
【设计模式】 工厂模式实例 C++ , 利用工厂模式写一个计算器
查看>>