我一直在努力与我的UIView子类动画的方式看似小毛刺。我有如下设置:UIView调整动画故障
self.contentMode = UIViewContentModeRedraw;
self.contentStretch = CGRectMake(0.5f, 0.5f, 0.0f, 0.0f);
该视图基本上是一个矩形,它有一个3像素的笔画。因为我希望视图在调整大小时不扭曲,所以我有contentStretch属性指示视图的中间部分。问题在于,变形发生在它不断增长的时候,但是它在收缩时变得平滑。
好像我的动画块很简单;我有单独的成长和萎缩。这里的成长块:
[UIView animateWithDuration:0.5 animations:^{
CGRect newRect = CGRectMake(20, 100, 200, 70);
[titleView setFrame:newRect];
}];
这是相当困难的岗位描述,所以我认为组装只隔离那些有关这部分的测试案例工程。如果有人想看看?
http://dl.dropbox.com/u/2798577/ViewResizeTest2.0.zip
你可以看到当你点击“成长”按钮,动画前视图的左侧的“毛刺”。虽然在这里清晰可见,但在我的真实项目中情况更糟糕。
我不确定这是否是我的代码中的错误或框架的问题?希望它的前...
谢谢, 亚伦。
更新 已经收到雅各布的充分的反馈,我已经回到我的应用程序并删除了contentMode设置为UIViewContentModeRedraw,指出像他那样,它会运行的drawRect每次动画时间,也许,最初的框架小故障的一部分。所以现在动画是平滑的,但它动画到错误的位置,挤压双方。我已经更新了链接项目,以更准确地反映我的应用程序中发生的事情。
如果我不得不猜测,看起来contentStretch属性没有完成它的工作。它根据我的指令调整整个事物的大小,而不是根据CGRect区域进行调整。任何人都可以确认我是否正确使用它?
谢谢你的雅各布。我认为你已经解决了部分问题。但是,似乎在我的示例应用程序中显示出一个弱点。我已经更新了该应用程序,并且在我的问题中添加了关于此的注释。 –