2

我想创建我自己的子类,UIImage这将允许我创建一个可实现/可拉伸的图像,在四个边的每一边都有帽子。

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

到目前为止一切正常,我实现了自己的绘图代码-drawInRect:,它的行为符合预期。
但是,当将我的自定义子类实例分配为UIImageView的图像时,我的代码会中断。图像被渲染为正常的 UIImage 会。(在所有方向上缩放,没有任何上限)

我尝试在所有四种绘图方法(drawInRect, drawAtPoint,都是独立的加上 withblendMode:但它们似乎没有被调用。

在没有子类化的情况下UIImage使用它时,有没有办法提供自定义绘图代码?UIImageViewUIImageView

另外,我担心性能。默认的可拉伸图像在动画期间效果很好,但我想知道在为我的UIImageView. 我的渲染代码会在每一帧都被调用吗?

4

1 回答 1

2

Apple 文档中,它明确表示您不能覆盖-drawRect:a UIImageView,因此子类化UIImageView也不起作用。你必须实现你自己的UIView类。

子类UIImage化也不起作用,我已经尝试过了,根本没有调用公共方法,甚至没有调用CGImage. 我认为您需要覆盖一些私有 API 才能使其工作。

不要担心调整大小,您的渲染代码只会在最后一帧被调用。尽管如此,在大多数情况下,性能还是比使用UIImageView. Apple 优化了该类,使其在 GPU 上运行。

于 2012-05-06T05:19:14.323 回答