老师,我看视频教程明白封装,但是一用到作业上就不会封装了
来源: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]; } }
当你的代码量达到一定程度的时候,封装的过程就会使用了,所以不用着急,同学可以针对具体的问题向助教进行提问,祝学习愉快~
相似问题