【发布时间】:2010-03-19 22:40:00
【问题描述】:
我想要一个有边框图像的UIView 子类,但我不想也不关心边框图像本身周围的这个“新”框架/边界。
我想要做的只是使用drawRect 并在矩形之外绘制,但所有绘图都被剪裁了,我看不到不剪裁此上下文矩形之外的绘图的方法。
所以现在我已经向视图层添加了一个子层,在视图上设置 [self clipsToBounds] 并覆盖 setFrame 以控制我的子层框架并始终保持它在适当的大小(溢出视图框架 40 像素)。
问题在于uiview 上的setFrame 默认没有动画,但calayer 上的seTFrame 有。
我不能只禁用 calayers setFrame 上的动画,因为如果我在 uiview 上调用 setFrame uiview 动画块 calayer 仍然会禁用其动画。
显而易见的解决方法是在uiview动画上查找当前的animationDuration,并在子层上设置一个匹配的动画,但我不知道这个值是否可用。而且即使是这样,恐怕从另一个动画中调用一个动画是错误的。
不幸的是,最好的解决方案是根本不使用calayer,只需添加uiview 作为subview 并像我在图层中一样绘制,并希望使用autoresizingMask 设置到高度和宽度,一切都会“正常工作”。对于这样一个简单的任务,这似乎是不必要的开销。
【问题讨论】:
-
实际上,无论哪种方式,都需要更多的胶水代码来防止加盖的图像在动画中间被扭曲:/
-
如果您有答案,请将其标记为已回答。它会激励帮助您的人,您也可以为他们投票。
标签: iphone animation core-animation