老师,我看视频教程明白封装,但是一用到作业上就不会封装了
来源:6-2 作业题
simalinjia168
2018-07-17 15:15:04
这是我写的底部出按钮带字的,我就只创了个按钮类,只创了一个设置颜色的方法,疑惑啊,我现在迷茫了......1回答
底部的按钮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];
}
}当你的代码量达到一定程度的时候,封装的过程就会使用了,所以不用着急,同学可以针对具体的问题向助教进行提问,祝学习愉快~
相似问题