在 iOS 中创建动画进度条

发布于 2024-12-07 03:30:40 字数 225 浏览 0 评论 0原文

我正在尝试为 iPad 应用程序制作自定义动画条形图(即条形高度在激活时增加到设定水平)。我对 iOS 开发相当陌生,我只想获得有关如何完成此任务的反馈。

我正在尝试尝试条目中的答案,我想知道我从这一点开始是否正确。

I am trying to make a custom animated bar graph for an iPad application (i.e., bar height increases to set level when activated). I am quite new to iOS development and I just want to get feedback on how to approach this task.

I am trying to play around with the answer in this entry and I want to know if it's right that I'm starting from this point.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

慢慢从新开始 2024-12-14 03:30:40

如果您只想要一个实心条,您可以创建一个具有所需大小和位置的 UIView,设置其背景颜色,然后将其添加到您的视图中。这是不错的编码,使用 UIView 绘制实心矩形并不羞耻。 :]

对于更复杂的图形,您可能需要创建 UIView 的自定义子类并覆盖其 drawRect 消息来执行一些自定义绘图。例如:

- (void)drawRect:(CGRect)rect
{
  CGContextRef context = UIGraphicsGetCurrentContext();
  CGContextSetLineWidth(context, 4.0);
  CGContextSetRGBStrokeColor(context, 1.0, 1.0, 0, 1.0); // opaque yellow
  CGContextMoveToPoint(context, x1, y1); // for suitable definition of x1,y1, etc
  CGContextAddLineToPoint(context, x2, y2);
  CGContextStrokePath(context);
}

或者您可能想要做的任何其他 CGContext* 类型的绘图(例如饼图、折线图等)。

要为通过添加具有背景颜色的 UIView 创建的栏进行动画处理,请在动画开始时粘贴以下内容:

timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(onTimer:) userInfo:nil repeats:YES];
self.startTime = [NSDate date];

然后添加以下消息(注意:栏将向上增长)。

- (void) onTimer:(NSTimer*)firedTimer
{
  float time = [self.startTime timeIntervalSinceNow] * -1;
  if (time>kMaxTime)
  {
    [timer invalidate];
    timer = nil;
    time = kMaxTime;
  }
  int size = time * kPixelsPerSecond;
  myBar.frame = CGRectMake(x, y - size, width, size);
}

If you just want a solid bar, you can create a UIView of the size and placement that you need, set its background color, and add it to your view. This is decent coding, no shame in using a UIView to draw solid rectangles. :]

For more complicated graphics, you might want to create a custom subclass of UIView and override its drawRect message to do some custom drawing. For example:

- (void)drawRect:(CGRect)rect
{
  CGContextRef context = UIGraphicsGetCurrentContext();
  CGContextSetLineWidth(context, 4.0);
  CGContextSetRGBStrokeColor(context, 1.0, 1.0, 0, 1.0); // opaque yellow
  CGContextMoveToPoint(context, x1, y1); // for suitable definition of x1,y1, etc
  CGContextAddLineToPoint(context, x2, y2);
  CGContextStrokePath(context);
}

or whatever other CGContext* sort of drawing you might want to do (e.g. pie charts, line charts, etc).

To animate a bar that you create by adding a UIView with a background color, stick the following whenever the animation starts:

timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(onTimer:) userInfo:nil repeats:YES];
self.startTime = [NSDate date];

and then add the following message (note: the bar will grow upwards).

- (void) onTimer:(NSTimer*)firedTimer
{
  float time = [self.startTime timeIntervalSinceNow] * -1;
  if (time>kMaxTime)
  {
    [timer invalidate];
    timer = nil;
    time = kMaxTime;
  }
  int size = time * kPixelsPerSecond;
  myBar.frame = CGRectMake(x, y - size, width, size);
}
久而酒知 2024-12-14 03:30:40

我不知道该链接,但您可以从这里生成它们 http://preloaders.net/ 这应该会给您一个很好的帮助制作你自己的基地

idk about that link, but you can generate them from here http://preloaders.net/ that should give you a good base to make your own

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文