1

私はこの男と同じ問題を抱えており、提供された解決策はそれを解決しません (また、他の SO の質問で解決したことも明らかではありません)。

UIViewの.frameサイズを変更し、デフォルトを変更していない場合、 (Quartz パス).contentModeのカスタム描画は UIView のサイズに合わせてスケーリングされるはずですか? drawRect私はしません。呼び出しsetNeedsDisplayて再描画できるようになりましたが、アニメーション化できるスケーリングを探しています。これは可能ですか?

代わりに、私に起こっているのは、Quartz の描画が単にトリミングされているだけで、サイズが維持されているということです。直接設定やその他の実験を試みましcontentModeclipsToBoundsが、何を試してもQuartzの自動スケーリングは発生しません。

4

2 に答える 2

1

何か他のことが起こっているに違いありません.. contentModeが期待どおりに動作することを再確認するためにまとめた簡単なデモを次に示します。ビューで setNeedsDisplay を呼び出すと、画像が再レンダリングされます。

ビューで他にどのようなことをしていますか? (その contentStretch プロパティを変更していませんよね?) ビューのレイヤーで何かをしていますか? ビューの contentMode が本当に UIViewContentModeScaleToFill であることを確認しましたか? また、ビュー自体またはスーパービューのフレームをアニメーション化していますか?

于 2012-04-11T05:12:38.750 に答える
0

drawLayerを上書きしてみてください

- (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx
{
    [super drawLayer:layer inContext:ctx];

    /*here to change self.frame
        self.frame = CGRectMack(a, b, c, d);
    */
}
于 2012-05-03T03:34:01.487 に答える