使用变换时奇怪的UIView切割

时间:2015-03-09 12:05:04

标签: ios objective-c

我有一个自由形式的xib加载到滚动视图中。 Xib由两个UIImages组成。

然后我尝试缩小xib视图并设置其center

self.xibView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.2, 0.2);
[self.xibView setCenter:CGPointMake(self.scrollViewContent.center.x, self.scrollViewContent.center.y)];

它工作正常,我得到了可预测的结果:http://monosnap.com/image/d09XHn7dJ8uJTABxTiv0HqzwmhrdED.png(灰色显示滚动视图区域)

调试器输出:

xib frame: {{450, 120}, {60, 60}}
scrollview content frame: {{0, 0}, {960, 300}}
scrollview content offset: {320, 0}
scrollview content inset: {0, 0, 0, 0}
scrollview content center: {480, 150}
xib center: {480, 150}

但是如果我尝试将xib移动到内容中心(我将y坐标改为1点)......:

self.xibView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.2, 0.2);
[self.xibView setCenter:CGPointMake(self.scrollViewContent.center.x, self.scrollViewContent.center.y + 1)];

...然后我的xib被奇怪地切断了:http://monosnap.com/image/GhB1DyfRsAkiRXKXeZ68benqfHfliI.png

调试器输出几乎相同:

xib frame: {{450, 121}, {60, 60}}
scrollview content frame: {{0, 0}, {960, 300}}
scrollview content offset: {320, 0}
scrollview content inset: {0, 0, 0, 0}
scrollview content center: {480, 150}
xib center: {480, 151}

注意xib的大小保持不变。

此外,我在不同的变换比例值上测试了此行为。所以,如果将值设置为1,一切正常。如果将其设置为0.9,则会略微削减xib。你缩小xib的次数越多,削减xib就越多。

它出了什么问题?

1 个答案:

答案 0 :(得分:0)

解决方案是使用约束而不是以前的framecentral属性。如何以编程方式在此处完美地描述约束:http://www.thinkandbuild.it/learn-to-love-auto-layout-programmatically/如何为约束设置动画:https://stackoverflow.com/a/19923225/4637398