子类化UIImage

时间:2012-05-05 21:10:51

标签: ios uiimageview uiimage

我想创建自己的UIImage子类,这样我就可以创建一个可实现/可伸缩的图像,并在四边各有一个上限。

iOS 5的resizableImage不符合我的需求,因为它不允许我拉伸中间部分,现在也不推荐stretchableImage,因为它允许我只重复一个像素,而我可能想重复某种渐变。

到目前为止一切正常,我在-drawInRect:中实现了我自己的绘图代码,它的行为符合预期 但是,在将我的自定义子类实例指定为UIImageView的图像时,我的代码会中断。图像会像正常的UIImage一样呈现。 (在没有任何上限的情况下向各个方向缩放)

我尝试在所有四种绘图方法(drawInRectdrawAtPoint中设置断点,无论是独立还是blendMode:,但它们似乎都没有被调用。

有没有办法在UIImage内使用自定义绘图代码时提供自定义绘图代码而不进行子类化UIImageView

另外,我担心表现。默认的可伸缩图像在动画期间运行良好,但我想知道在设置UIImageView的大小属性(宽度和高度)时的动画效果。我的渲染代码会在每一帧被调用吗?

1 个答案:

答案 0 :(得分:2)

Apple Documentation中,它明确表示您无法覆盖-drawRect:的{​​{1}},因此子类UIImageView也不会起作用。您必须实现自己的UIImageView课程。

子类UIView将不起作用,我已经尝试了这一点,根本没有调用任何公共方法,甚至没有调用UIImage的附件方法。我认为您需要覆盖一些私有API才能使其工作。

不要担心调整大小,只会为最终帧调用渲染代码。 但是,在大多数情况下,性能比使用CGImage更糟糕。 Apple优化了该类,因此它可以在GPU上运行。