如何创建一个“可伸缩的”UIView

时间:2011-07-16 05:31:58

标签: objective-c ios cocoa-touch animation

我有一个包含另一个UIView的UIView。外部UIView通过drawRect在内部UIView周围绘制边框。 (边框太复杂,无法通过CALayer属性绘制。)

目前,当我为外部UIView的大小调整设置动画时,它的drawRect方法在动画开始时被调用一次,结果被拉伸或缩小。这看起来不太好。

我正在寻找一种在动画的每一步重绘内容的方法,或者找到一种方法来实现相同的视觉效果。 (结果应该类似于可伸缩UIImage的大小调整。)

3 个答案:

答案 0 :(得分:1)

您应该将视图的内容类型更改为:

your_view.contentMode = UIViewContentModeRedraw;

每次帧的变化都会重绘。

答案 1 :(得分:0)

我最后添加了带有自动调整遮罩的子视图,使其在动画过程中保持正确定位。

答案 2 :(得分:-1)

每次更改帧大小时,您需要向视图发送[UIView setNeedsToDisplay],您可以尝试覆盖setFrame:方法,如

- (void)setFrame:(CGRect)r
{
    [super setFrame:r];
    [self setNeedsToDisplay];
}