UI重新生成的问题
来源:6-1 UI课程总结
IDKWTS
2017-07-23 11:46:29



就是接着上次的那个问题 我这样重新生成UI但是当效果触发了之后 只是之前的UI被remove掉了而已 并没有重新生成
2回答
Tender10
2017-07-24
-(void)createAnswerButton:(IdiomModal *)modal{
//2.1在创建之前,吧答案区域的所有按钮都删掉
for (UIButton *btn in self.answerView.subviews) {
//调用btn的 删除方法
[btn removeFromSuperview];
}
//2.2创建按钮
for (int i=0; i<modal.answer.length; i++) {
//创建按钮
UIButton *ansButton=[UIButton buttonWithType:UIButtonTypeCustom];
//计算Frame
CGFloat ansbtnMarin=15;//按钮之间的间距
CGFloat ansbtnW = 44;//宽度
CGFloat ansbtnH = 44;//高度
CGFloat leftRightMargin=(self.view.frame.size.width-ansbtnW*modal.answer.length-ansbtnMarin*(modal.answer.length-1))/2;
//计算X坐标
CGFloat ansbtnX =leftRightMargin+i*(ansbtnW+ansbtnMarin);
CGFloat ansbtnY = 0;
ansButton.frame=CGRectMake(ansbtnX, ansbtnY, ansbtnW, ansbtnH);
//设置按钮的样式 两种状态设置
[ansButton setBackgroundImage:[UIImage imageNamed:@"btn_answer_highlighted"] forState:UIControlStateHighlighted];
[ansButton setBackgroundImage:[UIImage imageNamed:@"btn_answer"] forState:UIControlStateNormal];
//添加到答案区域的View中
[self.answerView addSubview:ansButton];
//为按钮绑定点击事件
[ansButton addTarget:self action:@selector(didClick:) forControlEvents:UIControlEventTouchUpInside];
//设置按钮的文字颜色
[ansButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
}
}建议在创建答案区域按钮的方法里,一开始就清除按钮,然后紧接着在执行下面for循环遍历创建按钮的方法。你之前在上一个问题中贴出了一个for循环创建视图的方法,在那个for循环创建之前,先清除一下。没有重新生成的还有一个原因就是获取下一题model的时候出现了问题。
Tender10
2017-07-23
代码的执行顺序应该是先清除,清除完紧接着执行加载按钮的代码。
相似问题