【问题标题】:Problem animating size change in a custom-drawn view在自定义绘制的视图中动画大小变化的问题
【发布时间】:2026-02-05 12:30:01
【问题描述】:

我有一个自定义的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?基本上,我希望我的自定义渲染代码能够处理视图的外观,无论它在任何时间点的大小。

【问题讨论】:

    标签: iphone ios


    【解决方案1】:

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

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

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

    【讨论】:

    • 有意思,我试试看。
    最近更新 更多