【问题标题】:Drawing a Bar in iPhone / iPad在 iPhone / iPad 中绘制条形图
【发布时间】:2012-05-26 06:34:12
【问题描述】:

如何绘制一个简单的 BAR?

像这样:

谢谢。

【问题讨论】:

  • 为了帮助您,我们需要知道您希望绘制哪种“栏” - 工具栏、进度条、滑块?

标签: objective-c ios xcode uitableview


【解决方案1】:

您需要制作一个 UIToolbar,将其放在 XIB 的底部,并在其上放置一些按钮。现在,这将默认为您提供一个具有标准黑色光泽的常规黑条。如果您想拥有自定义图像,有两种解决方案。

First 只是 UIToolbar 的子类并覆盖它的 drawRect 以绘制自定义图像。覆盖 drawRect 的代码如下所示:

//in some other code somewhere, preferably on init
self.image = [UIImage imageNamed: @"image"];

- (void)drawRect:(CGRect)rect {
    [self.image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

现在,在 iOS 5.0 中有 very useful called appearance,但您必须愿意只针对 5.x+ iOS 版本。

第二种比较简单,但是通用性较差,就是简单的在XIB底部贴一个UIImageView,在上面放一些按钮。这比上面的要容易得多,但可扩展性较差,更难修改,并且 在 iOS 中不受欢迎 有充分的理由 - 它违反了一般的 iOS 约定(你会输一些非常有用的功能)。

【讨论】:

    【解决方案2】:

    Crimson 有一个好主意,但由于他/她的回答需要使用 UIToolbar,我将提供一个替代方案:

    基本上你所显示的是某种进度条,所以最终你想要显示的内容应该是 UIControl 的子类,甚至更好,UIProgressViewUISlider

    Google 四处寻找自定义进度视图指示器或滑块。 There arealso good examplesavailable hereon Stackoverflow.

    【讨论】:

    • 实际上,UIToolbars 就像任何其他 UIView 一样,可以放置在任何地方,尽管 iOS 约定规定它们应该位于它们所在的视图的底部。但是,我刚刚意识到,虽然我假设 Kronokrator 在谈论底部栏,他们可能确实在谈论图像中的进度条。
    • 啊,我看到了that is true as of iOS 5@CrimsonDiego。但我仍然认为带有一些自定义绘图元素的子类 UISlider 或 UIProgressView 会更明智。但是让我们看看 Kronokrator 是怎么想的?
    • 是的 - 如果 Kronokrator 需要进度条,他绝对应该继承 UIProgressView 而不是 UIToolbar。这取决于他问的是什么类型的酒吧。
    • 我正在从 sqlite 获取数据。我会将它用于 cell.detailTextLabel。和图片一样。我不需要动画或任何进度。
    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2014-07-24
    • 1970-01-01
    相关资源
    最近更新 更多