我想创建自己的UIImage
子类,这样我就可以创建一个可实现/可伸缩的图像,并在四边各有一个上限。
iOS 5的resizableImage
不符合我的需求,因为它不允许我拉伸中间部分,现在也不推荐stretchableImage
,因为它允许我只重复一个像素,而我可能想重复某种渐变。
到目前为止一切正常,我在-drawInRect:
中实现了我自己的绘图代码,它的行为符合预期
但是,在将我的自定义子类实例指定为UIImageView
的图像时,我的代码会中断。图像会像正常的UIImage一样呈现。 (在没有任何上限的情况下向各个方向缩放)
我尝试在所有四种绘图方法(drawInRect
,drawAtPoint
中设置断点,无论是独立还是blendMode:
,但它们似乎都没有被调用。
有没有办法在UIImage
内使用自定义绘图代码时提供自定义绘图代码而不进行子类化UIImageView
?
另外,我担心表现。默认的可伸缩图像在动画期间运行良好,但我想知道在设置UIImageView
的大小属性(宽度和高度)时的动画效果。我的渲染代码会在每一帧被调用吗?
答案 0 :(得分:2)
在Apple Documentation中,它明确表示您无法覆盖-drawRect:
的{{1}},因此子类UIImageView
也不会起作用。您必须实现自己的UIImageView
课程。
子类UIView
将不起作用,我已经尝试了这一点,根本没有调用任何公共方法,甚至没有调用UIImage
的附件方法。我认为您需要覆盖一些私有API才能使其工作。
不要担心调整大小,只会为最终帧调用渲染代码。
但是,在大多数情况下,性能比使用CGImage
更糟糕。 Apple优化了该类,因此它可以在GPU上运行。