0

我有一些代码以不同的部分(小时、分钟、秒)显示时间。

- (void)viewDidLoad
{
    [self updateTime];

    [super viewDidLoad];

    hourFormatter = [[NSDateFormatter alloc] init];
    hourFormatter.dateFormat = @"HH";
    minuteFormatter = [[NSDateFormatter alloc] init];
    minuteFormatter.dateFormat = @"mm";
    secondFormatter = [[NSDateFormatter alloc] init];
    secondFormatter.dateFormat = @"ss";
}

- (void)updateTime {

    [updateTimer invalidate];
    updateTimer = nil;

    currentTime = [NSDate date];
    NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init];
    [timeFormatter setTimeStyle:NSDateFormatterMediumStyle];

    hourLabel.text = [hourFormatter stringFromDate: currentTime];
    minuteLabel.text = [minuteFormatter stringFromDate: currentTime];
    secondLabel.text = [secondFormatter stringFromDate: currentTime];

    updateTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(updateTime) userInfo:nil repeats:YES];
}

我想要三个栏(小时、分钟、秒)随着时间的增加而上升。就像这个 cydia 锁屏调整: http: //patrickmuff.ch/repo/

编辑:我应该补充一点,我对 Objective-C 非常陌生并且非常缺乏经验,因此非常感谢任何提示/帮助!

4

1 回答 1

1

您当前正在获取单位数(小时、分钟、秒)的文本 - 您需要获取这些数字的floatint版本,并使用它们来设置“框”的框架(应该是UIView实例)。

您显示的屏幕截图实际上是通过将所有视图框架设置为相同大小并使用半透明背景颜色来完成的。然后,每个视图都会有一个子视图,您可以在其中使用单位值设置框架高度。并且子视图将具有完全不透明的背景颜色。

当然,这一切都可以通过核心图形而不是视图来完成。


好的,从你的评论来看,很好,背景很好。在您的 XIB 中,创建 3 个视图并将它们放置在背景区域上。将插座连接到它们,以便您可以在代码中使用它们。将它们的背景颜色和高度设置为零。

在您的代码中,每次获得新的单位值时,修改视图框架(以增加高度并减少“y”位置),例如(从我的头顶上写下来):

NSInteger hours = ...;

CGRect frame = self.hoursView.frame;

if ((NSInteger)frame.size.height != hours) { // check if we need to modify
    frame.origin.y -= (hours - frame.size.height);
    frame.size.height = hours;

    self.hoursView.frame = frame;
}
于 2013-08-04T10:38:27.697 回答