使用addSubview将UIView移动到其他UIView中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用addSubview将UIView移动到其他UIView中相关的知识,希望对你有一定的参考价值。

我有UIImageView,我想将它与右边对齐。但我试着开始只是移动:

let imageView = UIImageView(image: UIImage(named: "icon_delete"))

var rect = imageView.frame
rect.origin.x += 100
imageView.frame = rect

photosViewController.overlayView.bottomStackContainer.addSubview(imageView)

但似乎它不起作用,图像设置在左侧:

enter image description here

怎么了?

答案

尝试使用autolayout锚点

imageView.leadingAnchor.constraint(equalTo: bottomStackContainer.leadingAnchor, constant: 100).isActive = true

bottomStackContainer是stackView吗?您应该通过.addArrangedSubview()方法添加排列的子视图。

另一答案

尝试使用setNeedsDisplay()方法重绘视图。

参考:https://www.hackingwithswift.com/example-code/uikit/how-to-force-a-uiview-to-redraw-setneedsdisplay

另一答案

首先,假设:

photosViewController.overlayView.bottomStackContainer

是一个视图(我在我的代码片段中调用containsView),尝试类似于:

let imageView = UIImageView(image: UIImage(named: "icon_delete"))
containingView.addSubview(imageView)

imageView.translatesAutoresizingMaskIntoConstraints = false
containingView.translatesAutoresizingMaskIntoConstraints = false
imageView.trailingAnchor.constraint(equalTo: containingView.trailingAnchor).isActive = true

如果您需要将图像从后缘移开,您可以:

imageView.trailingAnchor.constraint(equalTo: containingView.trailingAnchor, constant: -10).isActive = true

或者你需要移动它。注意:如果您忘记在两个视图上将自动调整遮罩设置为false,则会出现运行时错误。

以上是关于使用addSubview将UIView移动到其他UIView中的主要内容,如果未能解决你的问题,请参考以下文章

UIView addSubview 自动布局不起作用

UIWindow 和 UIView addSubview 问题

在 UIView 中绘制以及 addSubview

动画 UIView 高于所有其他视图

使用 XIB 将 UIView 移动到其他视图内部时保持位置

addSubview 和 addArrangedSubview 不显示内容