在UIView上更新颜色的新手问题

时间:2010-08-27 11:38:11

标签: iphone objective-c

我使用的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;
}

2 个答案:

答案 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;

}