0

我正在用 Xcode 和 Objective C 开发一个 iPhone 应用程序。

我想要实现的是根据一天中的时间更改不同标签的背景颜色。

我在 XIB 文件中设置了几个 UILabel 并设置了它们的背景颜色。在我的 .m 文件中,我设置了一个每 3 秒运行一次的操作。代码片段:

- (void)updateTime
{
    NSDate *currentTime = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"HHmm"];
    NSString *resultTime = [dateFormatter stringFromDate: currentTime];

    if([resultTime compare:@"0819"] == NSOrderedDescending)
    { //IF THE TIME IS AFTER 0820AM
        if([resultTime compare:@"0850"] == NSOrderedAscending)
        { // IF THE TIME IS BEFORE 0850AM
            labelOne.backgroundColor = [[UIColor alloc] initWithRed:160 green:160
                                                           blue:160 alpha:1.0];     
        }
    }
    if([resultTime compare:@"0849"] == NSOrderedDescending)
    { 
        if([resultTime compare:@"0945"] == NSOrderedAscending)
        { 
            labelTwo.backgroundColor = [[UIColor alloc] initWithRed:160 green:160
                                                            blue:160 alpha:1.0];  
        }
    }

这似乎适用于更改背景颜色,但是,当 if 语句旨在返回 false(它不在那个时间括号内)时,背景颜色不会变回 XIB 文件中的颜色。

有人可以阐明我如何在特定时间段内让不同的 UILabel 改变颜色。

4

0 回答 0