【问题标题】:Creating animated progress bar in iOS在 iOS 中创建动画进度条
【发布时间】:2011-09-29 04:07:21
【问题描述】:

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

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

【问题讨论】:

    标签: ios progress-bar


    【解决方案1】:

    如果你只想要一个实心条,你可以创建一个你需要的大小和位置的 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);
    }
    

    【讨论】:

    • 谢谢!会先试试这个。
    • 酒吧向上移动(像蛇一样)而不是向上移动。可能是什么问题?
    • 听起来你正在改变 y 但不是大小。仔细检查所有东西的坐标,确保你告诉 iOS 画一个更高的条。
    • 在这个例子中,x1、x2、y1、y2、kMaxTime、x 和 y 是什么?我猜最后的 x 和 y 是酒吧成长的最终坐标? kPixelsPerSecond 我猜是速度。
    • 它们是你想要的任何东西......选择一个数字,任何数字。了解这里发生了什么的最好方法是尝试一些事情;比如 0,0 和 10,10 等。kMaxTime 是您希望动画持续多长时间。我回答的目的是帮助提问者开始绘制自定义图形对象。一旦你可以画线,就很容易阅读 API 来了解如何做其他事情。
    【解决方案2】:

    idk 关于那个链接,但你可以从这里生成它们 http://preloaders.net/ 这应该会给你一个很好的基础来制作你自己的

    【讨论】:

    • 谢谢,但我实际上需要做一些类似绘图的事情(设置最大值,设置栏的高度,当你激活时,它会慢慢进步,直到达到指示的值)可以被重复使用。所以创建自定义预加载器实际上是行不通的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2015-06-19
    相关资源
    最近更新 更多