如何解决如何将UIView作为子视图添加到视图用于向用户提供反馈
|| 我正在创建一个“费率”应用程序。当用户对鱼进行评分时,我想显示一个带有星号的“平均评分:*”的小框。 我已经在表格的单元格中获得了类似的效果,但是似乎无法使其在正常视图中正常工作(我运行了以下代码,视图中没有任何显示):-(void)displayAvg:(NSInteger)avg{
UILabel *text = [[UILabel alloc]initWithFrame:CGRectMake(10,10,90,20)];
text.text = @\"Average Rating:\";
UIView *wrapper = [[UIView alloc]initWithFrame:CGRectMake(100,200,100,30)];
wrapper.layer.cornerRadius = 8;
wrapper.backgroundColor = [UIColor whiteColor];
[wrapper addSubview:text];
[text release];
UIImageView *star;
NSInteger ratingI = avg;
for(int i = 0; i<ratingI; i++) {
star = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@\"little_star.png\"]];
star.frame = CGRectMake(50 + (i * 16),16,16);
[wrapper addSubview:star];
[star release];
}
[self.view addSubview:wrapper];
[self.view bringSubviewToFront:wrapper];
NSLog(@\"Sleeping...\");
[NSThread sleepForTimeInterval:3];
[wrapper removeFromSuperview];
[wrapper release];
}
解决方法
我尝试了此代码问题是与以下行
[NSThread sleepForTimeInterval:3];
因此,您可以代替此行,而是编写一个新方法,并以\'wrapper \'作为参数调用它,以删除包装器视图。
[self performSelector:@selector(removeWrapper:) withObject:wrapper afterDelay:3];
实施方法
-(void)removeWrapper:(id)sender
{
UIView *wrapper = sender;
[wrapper removeFromSuperview];
[wrapper release];
}
,这不是您的问题的答案,但我认为最好添加3秒后触发的计时器,然后移开窗口;您不会以这种方式阻塞线程;您是否首先尝试仅添加简单的子视图,即没有其他代码的包装器?然后出现吗?或实际上,当我重新思考问题时,这可能是您问题的答案-用这种方式阻塞线程可能是窗口永远无法显示的原因。到目前为止,我知道线程返回运行循环后,UI将会更新。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。