在UIView的边界图象

时间:2010-03-19 22:40:01

标签: iphone animation core-animation

我想要一个具有边框图像的UIView子类,但我不想或不关心边框图像本身周围的这个“新”框架/边界。

我想要做的只是使用drawRect并在rect之外绘制,但所有绘图都被剪裁,我看不到在此上下文之外剪辑绘图的方法。

所以现在我已经在视图层添加了一个子图层,在视图上设置[self clipsToBounds]并覆盖setFrame来控制我的子图层框架并始终保持适当的大小(溢出视图框架)由40px)。

问题在于setFrame默认情况下uiview没有动画,seTFrame上只有calayer

我无法在calayers setFrame上停用动画,因为如果我要在setFrame动画块内的uiview上调用uiview { {1}}仍会禁用其动画。

显而易见的解决方案是在calayer动画上查找当前animationDuration并在子图层上设置匹配的动画,但我不知道该值是否可用。即使它是,我担心从另一个动画中调用动画是错误的。

不幸的是,最好的解决方案是根本不使用uiview,只需添加一个calayer作为uiview并将其绘制成就像我正在绘制到我的图层中一样,并希望将subview设置为高度和宽度,一切都“正常”。对于这么简单的任务来说,这似乎是不必要的开销。

1 个答案:

答案 0 :(得分:1)

我的解决方案是覆盖initWithFrame:添加周围的边框像素并在子视图中包含内容。它可能是不必要的开销,但绝对是“可可”路线。最后它可能会更容易,因为子视图结构允许您从边框中单独编辑内容,因此在重绘内容时不必重绘边框。从OOP的角度来看,保持它们是分开的。

除了子视图结构之外,clipsToBounds路径可能是最简单的路径,但是在一个绘图周期和一个对象中管理边框和内容可能会花费更多的工作,因此它的开销是值得的。

请原谅任何拼写错误,请在我的iPhone上输入。