提问者:小点点

UIImageView帧未正确放置在父ImageView上


我有一个调色板imageview,在我想要放置一个加号图标(imageview)根据x和Y轴我从后端得到。 如果我得到x=0和y=0,加号的帧是正确放置的

对于y轴,如果我将调色板imageView的高度设置为加号图标框架的y轴,则该图标不会变为实际的(0,0)

我使用的代码如下

 let cWidth = self.colorPalleteImageView.frame.size.width // 348
 let cHeight = self.colorPalleteImageView.frame.size.height // 378.5

 let imageView = UIImageView(image: appImages.roundPlusIcon.image)
 imageView.frame = CGRect(x: 0, y: cHeight, width: 22, height: 22)
 colorPalleteImageView.addSubview(imageView)

我正在用iPad 12.9英寸模拟器检查这一点。 如果我把颜色调色板图像的宽度给plusIconImageView的x轴,它不会在x轴结束,它会停留在imageview的宽度结束之前,我不知道为什么会发生这种情况,需要帮助吗


共3个答案

匿名用户

在自动布局完成设置框架之前,您正在使用框架大小。

我建议使用约束条件,但如果你想坚持使用框架坐标。。。

  • ViewDidLoad()
  • 中添加“Round Plus”图标imageView
  • ViewDidLayoutSubViews()ViewDidAppear()
  • 中设置其Frame.Origin

匿名用户

ImageView.frame=CGRect(X:cWidth,Y:cHeight,Width:22,Height:22)

主人:

ImageView.Frame=CGRect(x:0,y:0,width:22,height:22)

轴是:

0,0-------------->; X

这是一个非常重要的问题

null

null

null

v

用0,0把小图像的左上角放到大图像的左上角。

匿名用户

您可以通过将height属性修改为超级视图绑定的高度来修复此问题。 您需要知道framebounds之间的区别,才能理解为什么会发生这种情况。 简单地说,frame是相对于它的超级视图的CGRect,bounds是相对于它自己的坐标的CGRect。 很多详细的解释都可以在网上找到,只需要谷歌框架和界限,你会习惯这两个在你玩了很多次之后。 以下是解决此问题的方法。

let cHeight = self.colorPalleteImageView.bounds.size.height