33

iOS 6 以下でプログレス ビューの高さを増やしたいのですが、appearance メソッドを使用してこれを行っています。

  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の進行状況ビューに制約を追加し、制約を介して高さを明示的に設定することでこれを行いました. このソリューションでは自動レイアウトを使用する必要があるため、必ずそれをオンにしてください。

高さ属性

表示: Size Inspector の「Height」属性は、Progress View に対して目に見えてグレー表示され、変更できません。ただし、Progress View 自体に制約を定義し、制約の高さを 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

スウィフト 3.x

progressView.transform = CGAffineTransform(scaleX: 1.0, y: 5.0)
于 2016-11-24T08:37:01.183 に答える
0

アクセサframeでは設定できないことに注意してください。appearance各進行状況ビューで個別に設定する必要があります。

通常、高さはプログレス バーのスタイルに応じて設定されます。

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

Autolayout を使用している場合、解決策は簡単です。こちらの回答の 1 つで説明されているように、高さの制約を作成します。

ただし、コードで進行状況バーを作成しているため、ここにいる可能性があります。

この場合、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 に答える