33

我想在 iOS 6 及以下版本中增加进度视图的高度,我正在使用外观方法

  UIImage *progressImage = [[UIImage imageNamed:@"sliderbk-progress.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 5)];
[[UIProgressView appearance] setProgressImage:progressImage];

但现在在 iOS7 中这个代码不起作用我什至尝试给出下面的代码但没有用。任何帮助都会有所帮助。谢谢

[[UIProgressView appearance] setFrame:CGRectMake(20, 100, 280, 100)];
4

7 回答 7

60

如果我正确理解了这个问题,听起来您想增加 iOS7 中进度视图的高度,而您之前在 iOS6 中使用的代码不再有效。

我最近不得不解决一个类似的问题,我通过在 Interface Builder 的进度视图中添加一个约束并通过约束显式设置高度来做到这一点。此解决方案将需要使用自动布局,因此请确保您已将其打开。

高度属性

显示:尺寸检查器上的“高度”属性对于进度视图明显变灰并且无法更改 - 但是我已经在进度视图本身上定义了一个约束并将约束的高度设置为 50 点,这实际上反映在IB。

根据我所见,iOS6 进度条具有静态高度值,因此如果您还想支持 iOS6,则需要另一种方法。

于 2013-10-26T12:55:55.207 回答
47

而其他人报告说 CGAffineTransform() 也可以:

[self.progressView setTransform:CGAffineTransformMakeScale(1.0, 3.0)];
于 2014-01-16T09:16:17.833 回答
2

已经在这里回答了 如何增加 UIProgressView 的高度

@implementation UIProgressView (customView)

- (CGSize)sizeThatFits:(CGSize)size 
{
   CGSize newSize = CGSizeMake(self.frame.size.width,9);
   return newSize;
}

@end
于 2014-01-10T10:34:29.197 回答
2

斯威夫特 3.x

progressView.transform = CGAffineTransform(scaleX: 1.0, y: 5.0)
于 2016-11-24T08:37:01.183 回答
2

这是 user3189408 的Swift版本和 Rushabh 为像我这样的新开发人员和 swift 爱好者提供的出色解决方案。针对 iOS 7+/Swift 2.0 进行了测试。

    progressView.transform = CGAffineTransformMakeScale(1.0, 5.0)
于 2016-01-06T19:54:17.600 回答
0

您可以注意frame不能由appearance访问者设置。您必须分别在每个进度视图上设置它。

通常,根据进度条样式设置高度。

- (id)initWithProgressViewStyle:(UIProgressViewStyle)style; // sets the view height according to the style
于 2013-09-10T11:36:54.687 回答
0

如果您使用的是自动布局,那么解决方案很简单:按照此处的答案之一创建高度约束。

但是,您可能会在这里,因为您正在代码中创建进度条。

在这种情况下,transform如果视图具有圆角,则通过该方法解决此问题并不理想,因为CGAffineTransform会弄乱角半径的绘制方式。

我将子类UIProgressView如下:

class ProgressBarThick: UIProgressView {
    
    var height : CGFloat = 12
    var width: CGFloat = 0.0
    
    override func sizeThatFits(_ size: CGSize) -> CGSize {
        return CGSize(width: width,
                      height: height)
    }
}

在绘制视图之前设置高度和宽度。

于 2021-09-22T10:19:18.927 回答