我使用的UIView对象只是将背景颜色设置为蓝色。这在代码第一次运行时工作正常,但是再次运行changeBackgroundColor方法(从按钮操作)不会将颜色更改为红色,即使调试代码清楚地显示方法按预期运行。
请有人解释为什么视图颜色不更新?
部首:
@interface colorClass : NSObject {
UIView *myView;
}
@implementation
...
-(UIView *)changeBackgroundColor {
myView = [[UIView alloc] initWithFrame:CGRectMake(100, 0, 500, 245)];
static int counter = 1;
if (counter++ %2){
[mediaView setBackgroundColor:[UIColor blueColor]];
}else {
[mediaView setBackgroundColor:[UIColor redColor]];
}
return myView;
}
答案 0 :(得分:0)
改变颜色后你试过[yourView setNeedsDisplay]
吗?
编辑:
- (UIView *)changeBackgroundColorof:(UIView *)view {
static int counter = 1;
if (counter++ %2){
[view setBackgroundColor:[UIColor blueColor]];
}else {
[view setBackgroundColor:[UIColor redColor]];
}
return view;
}
您必须使用
初始化您的视图yourView = [[UIView alloc] initWithFrame:CGRectMake(100, 0, 500, 245)];
并致电
yourview = [self changeBackgroundColorof:yourview];
答案 1 :(得分:0)
感谢两人指出我正确的方向。最后,我需要创建一个新的init方法,现在代码完全按照我的希望工作。
- (id)init {
myView = [[UIView alloc] initWithFrame:CGRectMake(100, 0, 500, 245)];
return self;
}