Iphone 创建计时器并使用条形图表示剩余时间

Iphone 创建计时器并使用条形图表示剩余时间,iphone,objective-c,ios,uiimageview,uiimage,Iphone,Objective C,Ios,Uiimageview,Uiimage,我目前正在为一个游戏创建一个计时器,但是我对用一个条来表示剩余时间的最佳方式有点困惑。我已经启动并运行了计时器,我打算用它来缩放图像以表示剩余时间: 通过的时间/总时间=经过的时间百分比(x100可能是PTE,但没有它更容易) 图像宽度=(1-PTE)*起始图像宽度 我找不到任何简单的方法来缩放这种格式的图像,因为width参数似乎是只读的,如果我没有弄错的话,缩放函数是4.x和更高版本?有人知道最好的方法吗 谢谢, Elliott试试这个 [UIView animateWithDuration

我目前正在为一个游戏创建一个计时器,但是我对用一个条来表示剩余时间的最佳方式有点困惑。我已经启动并运行了计时器,我打算用它来缩放图像以表示剩余时间:

通过的时间/总时间=经过的时间百分比(x100可能是PTE,但没有它更容易) 图像宽度=(1-PTE)*起始图像宽度

我找不到任何简单的方法来缩放这种格式的图像,因为width参数似乎是只读的,如果我没有弄错的话,缩放函数是4.x和更高版本?有人知道最好的方法吗

谢谢, Elliott试试这个

[UIView animateWithDuration:0.1 animations: ^ {
 CGRect frame = CGRectMake(xMargin, yMargin, width, height);
 myBar.frame = frame;
}];

尝试将条形图转换为可拉伸图像。我做了类似的事情,但是更新了一天中的时间。这是我的密码:

UIImage *dayPassed = [UIImage imageNamed:@"dayPassedSmall.png"];
UIImage *passed = [dayPassed stretchableImageWithLeftCapWidth:20.0 topCapHeight:0.0];

UIImageView *dayPassedView = [[[UIImageView alloc] initWithFrame:dayFrame] autorelease];
dayPassedView.image = passed;
[self.view addSubview:dayPassedView];
之后,您可以使用以下方法调整宽度:

CGRect imageFrame = dayPassedView.frame;
double relWidth = (1-PTE)*width;
imageFrame.size.width = relWidth;
dayPassedView.frame = imageFrame;

如果你想为从旧帧到新帧的变化设置动画,你可以,但我认为主要的是图像必须是可拉伸的

您好,我认为这将工作,但我的代码是完全错误的格式使用它。我已经将我的主循环存储在一个导致很多问题的单例中,所以我将快速创建一个FSM。我可以问一下^character是做什么的吗?它表示一个块变量。()。这是一个很好的简单解决方案,非常感谢您的帮助:)。唯一让我困惑的是第二个版本中的命名约定,因为dayPassed指的是DayPassedView(以防万一有人想使用代码但无法使其正常工作)。很抱歉造成混淆。我想这是我学习过程中留下的。我按照你的建议编辑了它。如果它有用,也许你会把它标记为已接受?