iOS7中的自定义UIProgressView不可能吗?

Phi*_*tto 10 objective-c uiprogressview ios7

我知道这已经被问过一百次,但我在其他问题上找不到合适的答案.

我的问题是我的UIProgressView的高度.虽然在iOS6中一切都按预期工作,但现在在iOS7中没有什么是正确的.

我尝试了以下方法:

  • 1.在drawRect-Method中设置自定义布局:

就像iOS6中的魅力一样,但在iOS7中,进度从一开始就设置为100%,或者条形非常薄.

  • 2.使用UIProgressView外观的progressImagetrackImage属性设置布局

也不能在iOS7下工作.这里的栏进度也从一开始就设定为100%.有些人写道应该可以这样,但我无法确认iOS7.

  • 3.使用initWithProgressStyle进行初始化,然后设置进度视图的框架

在iOS6和iOS7下不适用于我.在iOS7中,酒吧非常纤薄.

对我来说,这是非常令人沮丧的,因为酒吧要么是100%,要么是超薄.任何人都可以给我一个建议,以达到我的进度视图的旧布局.我认为它必须是可能的,因为如果我在iPhone(安装了iOS7)上查看我的Spotify应用程序,进度视图就像之前一样.

在此输入图像描述

非常感谢你!

Pav*_*vel 18

好吧,问题是接口iOS6 UIProgressView和iOS7 UIProgressView有不同的内部子视图结构.iOS6进度视图是没有子视图的单个视图(或者一些次视图),iOS7进度视图有很少的附加子视图用于绘制进度条和背景.

如果您删除iOS7上UIProgressView的所有子视图而不是drawRect:方法将在iOS6上与之前相同,但您将完全负责绘制进度视图内容,包括进度条和背景.

- (id) initWithCoder: (NSCoder*)aDecoder
{
    if(self=[super initWithCoder: aDecoder])
    {
            // Also you can setup height of your progress here
            // self.frame = CGRectMake(0,0,100,yourHeight);

        NSArray *subViews = self.subviews;
        for(UIView *view in subViews)
        {
            [view removeFromSuperview];
        }
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)