UIProgressView
に関するiOS 5の新しいプロパティをいくつか試しています。彼らです:
@property(nonatomic, retain) UIImage *progressImage;
@property(nonatomic, retain) UIImage *trackImage;
これらの新しいプロパティにより、「progress」と「track "画像。自分でロールすることなく、ファンシーなプログレスバーを作成できます。
ただし、Apple "stretches"の進行イメージを理解することはできません。これは、ドキュメントが少し不安定なためです=/OR私が知らない標準があります。とにかく、適切な進捗状況と画像の追跡方法を理解するのを手伝ってくれる人がいるかどうか尋ねます。
カスタムイメージをロードすると、どのサイズを試しても、次のような結果が得られます。
私の測定値は次のとおりです。
最後に、ここに私のカスタム画像があります:
progressImage.png
trackImage.png
これが起こっていることです:
UIProgressView
に提供する画像は、基本的にUIImageViews
に押し込まれ、UIImageView
は画像を拡大してスペースを埋めます。
単に行う場合:
[progressView setTrackImage:[UIImage imageNamed:@"track.png"]];
次に、10px幅の画像を引き伸ばして(たとえば)100px幅の画像ビューを埋めようとしているため、奇妙な結果が得られます。これは、(大まかに)画像内のすべてのピクセルが10回繰り返されることを意味します。したがって、画像のピクセルが次の場合:
0123456789
次に、その画像を100ピクセル幅の画像ビューに直接配置すると、次のように拡大されます。
000000000011111111112222222222333333333344444444445555555555...
これはあなたに起こっていることです。
あなたが本当に実現したいことはこれです:
01234567812345678123456781234567812345678...123456789
言い換えると、画像に1ポイント左端が引き伸ばされず、中央がタイル表示され、1ポイント右端にも引き伸ばされないようにする必要があります。これを行うには、 画像のサイズを変更できるようにする必要があります :
UIImage *track = [[UIImage imageNamed:@"track"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 1, 0, 1)];
[progressView setTrackImage:track];
これを適切に垂直に並べて表示したい場合は、エッジインセットを{1, 1, 1, 1}
にする必要があります(1ポイントの境界が必要であると想定)。
progressImage
にも同じことを行うと、正しいように見えるものになります。
画像はサイズ変更可能である必要があります。