老师,我看视频教程明白封装,但是一用到作业上就不会封装了

来源:6-2 作业题

simalinjia168

2018-07-17 15:15:04

http://img.mukewang.com/climg/5b4d97140001d4ed10930703.jpg这是我写的底部出按钮带字的,我就只创了个按钮类,只创了一个设置颜色的方法,疑惑啊,我现在迷茫了......
写回答

1回答

imoocLovers

2018-07-17

底部的按钮button是不需要再自定义的,系统按钮已经能够满足我们效果图上显示的样式,也就是不需要在创建一个button类,直接在viewController中定义UIButton类型的按钮就可以了,我们可以将创建选项区按钮的代码封装到一个自定义方法中,这样每当我们点击下一题的时候,就调用这个自定义方法来布局选项区的按钮,想要布局好这些按钮,关键是需要计算好每个按钮的位置,下面的代码可以参考:

-(void)createOptionButton:(IdiomModal *)modal{
    //清空 选项区域的所有按钮
    for (UIButton *btn in self.optionView.subviews) {
        [btn removeFromSuperview];
    }
    //九宫格算法 创建按钮
    for (int i=0; i<modal.options.count; i++) {
        //列
        int colNum=i%7;
        //行
        int rowNum=i/7;
        //计算每个按钮的宽度、高度、XY坐标以及间距
        CGFloat optBtnW = 44;
        CGFloat optBtnH = optBtnW;
        CGFloat optXYMargin=(self.view.frame.size.width-optBtnW*7)/(7+1);
        CGFloat optBtnX = optXYMargin+colNum*(optXYMargin+optBtnW);
        CGFloat optBtnY = optXYMargin+rowNum*(optXYMargin+optBtnH);
        
        //创建按钮 并且赋值给Frame
        UIButton *optBtn=[UIButton buttonWithType:UIButtonTypeCustom];
        optBtn.frame=CGRectMake(optBtnX, optBtnY, optBtnW, optBtnH);
        //添加到界面上
        [self.optionView addSubview:optBtn];
        //设置选项区域按钮的样式
        //分状态设置图片
        [optBtn setBackgroundImage:[UIImage imageNamed:@"btn_option"] forState:UIControlStateHighlighted];
        [optBtn setBackgroundImage:[UIImage imageNamed:@"btn_option_highlighted"] forState:UIControlStateNormal];
        
        //从model中取出对应的title设置为按钮文字
        NSString *font =  modal.options[i];
        [optBtn setTitle:font forState:UIControlStateNormal];
        //绑定点击事件
        [optBtn addTarget:self action:@selector(didClickOptButton:) forControlEvents:UIControlEventTouchUpInside];
        
    }
}

当你的代码量达到一定程度的时候,封装的过程就会使用了,所以不用着急,同学可以针对具体的问题向助教进行提问,祝学习愉快~

0

0 学习 · 1878 问题

查看课程