【问题标题】:Scale a UIView Horizontally水平缩放 UIView
【发布时间】:2012-02-16 18:52:48
【问题描述】:

我正在尝试水平缩放视图,但没有得到预期的结果。

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 并得到了我预期的结果。

【问题讨论】:

    标签: ios uiview frame scale bounds


    【解决方案1】:

    刚刚发现问题。

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

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

    希望它对某人有所帮助..

    谢谢帮助

    【讨论】:

      【解决方案2】:

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

      这应该可行:

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

      您无需将原点/中心点调整为仅向右缩放。

      【讨论】:

      • 是的,我需要重新居中视图。照你说的做,观点向两边增长。
      • @FelipeConde 真的吗?我刚刚制作了一个带有视图和按钮的全新项目,将按钮连接到带有该代码的方法,它只向右缩放......我不明白为什么它不为你做...您是否检查过您的观点的来源? - 如果你仍然不能让它工作,我会上传一些示例代码,你可以下载来测试它
      • 我刚刚粘贴了您的代码,并且视图向两边增长。我找到了一个解决方案,你可以在上面看到它。我刚刚回答了我自己的问题。谢谢你的帮助;)
      • @FelipeConde 我知道您已经找到了解决方案,但您不需要重置中心。你能检查一下你的视图的来源吗?
      • 认为边界的视图原点应该是 0,0。
      【解决方案3】:

      尝试使用仿射变换:

      view.transform = CGAffineTransformMakeScale(scaleX, 1)
      

      然后设置中心。

      【讨论】:

      • 仿射变换只是缩放视图。视图仍然具有与以前相同的边界值。 =/
      猜你喜欢
      • 1970-01-01
      • 2015-09-20
      • 2016-04-22
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      • 1970-01-01
      • 2015-05-11
      相关资源
      最近更新 更多