水平缩放UIView

问题描述:

我试图缩放水平的视图,但我没有得到我期望的结果。水平缩放UIView

view.bounds = CGRectMake(view.bounds.origin.x, view.bounds.origin.y , view.bounds.size.width * scaleX, view.bounds.size.height); 
view.center = CGPointMake(view.bounds.origin.x, view.center.y); 

正如你在上面的代码中看到的,我想将视图缩放到右侧。这就是为什么我改变了视图的中心。

问题是,视图仍然缩放到两边! 我做了同样的逻辑来垂直缩放另一个UIView,并得到了我期望的结果。

刚刚发现问题。

设置certer时,新的点必须是相对于框架,而不是边界。 所以,我得到的代码:

view.center = CGPointMake(-view.frame.origin.x, view.center.y); 

希望它可以帮助别人..

THX的帮助

如果视图框架的原点位于左上方(这是默认设置),那么增加视图的宽度应该只将其缩放到右侧。

这应该工作:

view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width * scaleX, view.frame.size.height); 

你并不需要调整原点/中心点规模仅在右边。

+1

是的,我需要重新市中心的景色。按照你所说的话,这个观点会发展到双方。 – 2012-02-17 17:20:07

+0

@FelipeConde真的吗?我只是用一个视图和一个按钮创建了一个全新的项目,将按钮连接到了一个带有该代码的方法,并且它仅适用于正确的...我不明白为什么它不适合你...你有没有检查你的视图的来源是哪里? - 如果您仍然无法使用它,我会上传一些示例代码,您可以下载它来测试 – 2012-02-17 18:01:32

+0

我刚刚粘贴了您的代码,并将视图扩展到双方。我找到了一个解决方案,你可以在上面看到它。我只是回答我自己的问题。 Thx为你提供帮助;) – 2012-02-17 18:06:02

尝试使用仿射变换而不是:

view.transform = CGAffineTransformMakeScale(scaleX, 1) 

,然后设置中心。

+0

仿射变换只是放大视图。该视图仍然具有与之前相同的值。 = / – 2012-02-17 17:17:32