发现控件设置了没显示的几种情况

[size=large][color=red]有时候,明明frame和数据都设置了,但是控件却没显示出来,总结一下一下几种情况[/color][/size]
[size=small]
1. frame的尺寸和位置不对 \ 或者其实传入的是个空值

2. hidden是否为YES

3. 控件是否确实已经添加到父控件中

4. alphe 是否小于 0.01 (当透明度设置很低的时候 , 直接等于隐藏了控件)

5. 被其他控件挡住了

6. 看一看这个控件的父控件前面5种情况有没发生

[/size]


[color=red][size=medium] 总结一下 : [/size][/color]

像以下情况 : 假如在init方法中设置frame bounds这里的值是0的,所以frame是0的

实际上任何UIView的 任何Init 方法里面的 bounds,frame等值,都是0




- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier
{
if (self = [super initWithReuseIdentifier:reuseIdentifier]) {

//创建子控件
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = self.bounds; // 这里的bounds的值是0
[self.contentView addSubview:btn];

UILabel *countlabel = [[UILabel alloc] init];

[self.contentView addSubview:countlabel];

}

return self;

}




[color=red][size=medium]所有控件初始化方法里,并不适合设置宽高,所以一般在以下方法中去设置[/size][/color]




/**
* 一般重写这个方法,去设置frame

* 当一个控件的frame发生改变时,就会调用(改变一次调用一次)

* 一般在这里布局内部的子控件(设置子控件的frame)
*/
- (void)layoutSubviews
{
//一定要调用父控件的layoutSubviews方法
[super layoutSubviews];

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值