做九宫格视图中遇到的问题(对 initFrame 的重写及九宫格排列)

  我们在做一些类似于九宫格的排列时,首先会创建 scrollView,然后再自定制一个 view类(继承自 UIView),

比如: 里面我们给两个属性

@property(strong,nonatomic)UIImageView *headImage;//存放图片
@property(strong,nonatomic)UILabel *lb;//存放标题等文字信息

然后在它的.m 方法里对 initFram 初始化方法进行重写,
代码:

-(id)initWithFrame:(CGRect)frame
{
    self= [super initWithFrame:frame];
    if (self) {
        //将图片添加到自定制View
        self.headImage=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height-30)];
        self.headImage.backgroundColor=[UIColor orangeColor];
        [self addSubview:self.headImage];
        self.lb=[[UILabel alloc]initWithFrame:CGRectMake(0, self.bounds.size.height-25, self.bounds.size.width, 20)];
        self.lb.backgroundColor=[UIColor blueColor];
        [self addSubview:self.lb];

    }
    return self;
}

每次创建自定制的 View对象 时都会调用初始化方法来初始化这个对象 这个做的好处是 在其他类创建 view 对他进行 initFram 初始化时会自动创建 view 中的成员,因为九宫格这种布局大致样式都是一样的,这样就不用再对view 内的对象一 一设置.

顺便提一下 九宫格的布局设置

int i=0; //控制排列的间距 以及 scrollView 的 contentsize 属性
    for (Students *stu in array) {
        CustomView *view=[[CustomView alloc]initWithFrame:CGRectMake(i%3*100+45, i/3*150, 95, 145)];
        view.lb.text=stu.name;
        view.headImage.image=[UIImage imageWithData:stu.headImage];
        [_scrollV addSubview:view];
        i++;
    }
    //设置滚动视图的contentsize
    _scrollV.contentSize=CGSizeMake([UIScreen mainScreen].bounds.size.width, (i+2)/3*150);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值