【问题标题】:UIbutton on zooming UIImageView in Scrollview在滚动视图中缩放 UIImageView 的 UIbutton
【发布时间】:2014-06-05 15:00:19
【问题描述】:

我在滚动视图中将按钮作为子视图添加到 UIImageview。当我缩放 UIImageView 时,显然这些子视图按钮会以纵横比缩放。我不希望这些按钮被放大。我怎样才能做到这一点。我已经尝试在不同的视图上添加按钮,而不是将其添加到 UIImageView 但是当我们缩放图像时它不会保持正确的 x 和 y 坐标。请提前给我解决方案谢谢

【问题讨论】:

  • 将按钮放在视图上并添加约束。
  • 我没有为此应用程序使用自动布局
  • 然后去@Sanjay 回答..它可能会帮助你

标签: ios objective-c cocoa-touch


【解决方案1】:

解决这个问题需要一点数学干预。

使用变换来缩放您的图像视图。

[<yourview> setTransform:CGAffineTransformMakeScale(<xsacle>, <y scale>)];

现在这个变换也将适用于你必须适当缩小按钮变换的所有子视图。

[<Your Button> setTransform:CGAffineTransformMakeScale(1/<xsacle>, 1/<y scale>)];

现在您还需要调整按钮的 x 和 y。

【讨论】:

    【解决方案2】:

    U 可以将 uibutton 的中心设置为 uiimageview 的中心,如下所示(不要在 imageview 中添加按钮):

    [btnControl setCenter:[imgView center]];
    

    【讨论】:

      【解决方案3】:

      首先需要存储你的按钮框架;

      -(void)viewWillAppear:(BOOL)animated{
          [super viewWillAppear:animated];
      
          initialButtonFrame = self.button.frame;
      }
      

      并在UIScrollView委托方法中使用以下代码。

      - (void)scrollViewDidZoom:(UIScrollView *)sv
      {
      
              self.button.frame = CGRectMake((initialButtonFrame.origin.x * self.scrollView.zoomScale),
                                     (initialButtonFrame.origin.y * self.scrollView.zoomScale),
                                     initialButtonFrame.size.width,
                                     initialButtonFrame.size.height);
      }
      

      【讨论】:

      • 解决方案按钮的大小保持不变,但 x 和 y 坐标会受到干扰。但我认为这可能有助于我只需要一些数学计算。
      【解决方案4】:

      您应该将这些按钮添加为其他视图的子视图。现在将其他视图和图像视图直接添加到滚动视图。现在,你应该实现UIScrollViewDelegate 方法。

      -(UIView *)viewForZoomingInScrollView
      {
         return imageView;
      }
      

      这将仅缩放图像视图,而不是具有按钮作为子视图的容器视图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-07
        • 2020-02-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多