0

StretchableImageWithLeftCapWidthでUIImageを使用してUIImageViewに画像を設定しようとしていますが、奇妙なスケーリングのバグが発生しています。基本的に、私の画像を幅31ピクセルの楕円形として描きます。左右の15ピクセルがキャップで、中央の1ピクセルがスケーリングされた部分です。

左のキャップを15に設定すると、これは問題なく機能します。ただし、たとえば4に設定すると、「中央」の部分は、両端が少しあるのに中央にまたがるので、少し湾曲していると思います。つままれた。

私が得たのは、左のキャップが一見正しいように見え、その後に、ピクセル5で1つのピクセルをスケーリングしたかのように長い中央部分が続き、画像の右側の部分が、幅の約2倍の幅で拡大および閉鎖します。元の画像の。結果の画像は、温度計の電球のようなものです。

誰かがこのような奇妙な行動を見たことがあり、何が起こっているのか知っているかもしれませんか?

4

2 に答える 2

2

あなたの観察は正しいです、ジョーイ。StretchableImageWithLeftCapWidthは、期待どおりに画像の中央全体を拡大しません。左のキャップのすぐ右のピクセル列と、上のキャップのすぐ下のピクセル行のみを展開します。

代わりにUIViewのcontentStretchプロパティを使用すると、問題が解決されます。これのもう1つの利点は、contentStretchでグラフィックを適切に縮小できるのに対し、stretchableImageWithLeftCapWidthはグラフィックを大きくした場合にのみ機能することです。

于 2010-08-13T15:41:39.723 に答える
0

正解かどうかはわかりませんが、LeftCapWidthなどは丸みを帯びた角用に作成されており、丸みを帯びた半径内の長方形内のすべてが、宛先ボタンなどの「キャップ」間のスペースに合うように引き伸ばされます。

したがって、楕円が4 x 2 = 8よりも高いか広い場合、中央の長方形にあるものはすべて引き伸ばされます。そしてあなたはそうです、それでそれは少なくとも少し醜いものを見るでしょう!しかし、それが対称的でさえない場合、何かがストレッチに影響を与えています。原点やフレームに関係しているのかもしれませんし、設定されているのかもしれませんし、2回設定されているのかもしれません。あるいは、温度計の外観を与える2つの異なる引き伸ばされた画像があります。

私はかつて、同じ保持オブジェクトを使用して、同じ場所に2つの同じボタンを作成しました。もちろん、前のボタンを破棄しました。それから、アルファを0に設定したときに、なぜボタンが消えなかったのか疑問に思いました...しかし、それは、その下に「死んだ」同一のボタンがあっただけです:)

于 2010-06-16T13:27:57.040 に答える