【问题标题】:How to properly detects taps on UIImageView with AspectFit scale mode如何使用 AspectFit 缩放模式正确检测 UIImageView 上的点击
【发布时间】:2023-03-10 15:30:01
【问题描述】:

我的布局如下。占视图控制器一半的视图内的图像视图(白色的)。考虑到顶部和底部的一些边距,图像视图填充容器。我将图像视图上的缩放模式设置为宽高比合适。这一切都为我提供了我想要的确切视觉效果。

但是,我还在图像视图上安装了点击手势识别器,并且我希望它仅检测显示实际图像的区域上的点击(由于宽高匹配,它只占用了一部分可用空间)。图像本身将动态更改,因此我不知道它将具有什么纵横比。实现这一目标的最简单方法是什么?

我想我必须摆脱图像视图上的尾随和前导约束,但接下来呢?

【问题讨论】:

标签: ios uiimageview autolayout interface-builder


【解决方案1】:

设置UIImageUIImageView 后,根据图片更新UIImageViewframe

How to make UIImageView automatically resize to the size of the image loaded

查看上面的链接。

【讨论】:

  • 以编程方式修改框架是唯一的选择吗?我认为它可以通过某种方式使用自动布局来实现。
  • 不是我。必须根据图像设置图像视图的框架
【解决方案2】:

首先找到图片的大小,然后更新ImageView的frame。根据图片大小和需求设置x和y位置。

UIImageView *myImageView = [[UIImageView alloc]init];
UIImage *img = [UIImage imageNamed:@"draft"];

CGSize mySize = [img size];

CGRect newFrame=CGRectMake(0, 0, mySize.width, mySize.height);
NSLog(@"height  : %f  width : %f",mySize.height,mySize.width);

myImageView.frame = newFrame;
myImageView.image = img;

【讨论】:

  • 不完全是。这样图像将不适合容器。然而,计算适当的大小很容易,但我希望避免以编程方式修改框架。
  • 你必须更新框架。没有其他选择。如果您想将图像保持在中心,则使用 (self.view.frame.size.width/2) - (imageView.frame.size.width/2) 作为 x 的值并相应地设置 y。
  • 好的,谢谢。在这种情况下,我宁愿计算点击是否在实际图像的区域内并留下尾随和前导边距。
  • 是的,你也可以试试...!
猜你喜欢
  • 2011-04-05
  • 2013-11-14
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
  • 2019-01-11
  • 2020-01-14
  • 1970-01-01
相关资源
最近更新 更多