在自定义绘制的视图中动画大小变化的问题

Posted

技术标签:

【中文标题】在自定义绘制的视图中动画大小变化的问题【英文标题】:Problem animating size change in a custom-drawn view 【发布时间】:2011-03-23 14:18:45 【问题描述】:

我有一个自定义的UIView,它实现了drawRect,以使用渐变背景和边缘周围的 1 像素黑色边框以及一些文本来呈现自己。

在我的父视图控制器中,我尝试使用以下代码将我的自定义视图从原来的小尺寸动画化为全屏:

[UIView beginAnimations:nil context:NULL];
CGRect screenRect = [[UIScreen mainScreen] applicationFrame];
CGRect detailRect = CGRectOffset(screenRect, 0, -screenRect.origin.y); 
[dayDetail.view setFrame:detailRect];
[UIView commitAnimations];

这可行,但我的自定义视图中的drawRect 仅在最初创建视图时调用一次。结果,调整大小只需要原始的小图像并将其放大到全屏,因此全尺寸视图的边框现在是多个像素宽而不是一个,并且文本的大小也得到了扩展。

有什么方法可以设置它,以便在视图从小到全屏动画时连续调用drawRect?基本上,我希望我的自定义渲染代码能够处理视图的外观,无论它在任何时间点的大小。

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题,我就是这样解决的:

dayDetail.view.contentStretch = CGRectMake(0.5, 0.5, 0.0, 0.0);

这只会拉伸中间像素。阅读文档以了解如何修改该行为。你当然可以问我,但阅读文档可能更快。此外,我可能只会引用文档。

【讨论】:

有意思,我试试看。

以上是关于在自定义绘制的视图中动画大小变化的问题的主要内容,如果未能解决你的问题,请参考以下文章

在自定义视图中制作 2 个动画

在自定义视图控制器转换中抑制导航推送动画

动画未在自定义布局中显示

如何为自定义视图选择设置膨胀和颜色变化的动画?

更新注释视图时如何在自定义注释引脚中制作动画

为啥自定义缩放和翻转动画后视图会在任务栏下绘制?