我的问题正是标题所说的。 我将imageview的宽度设置为等于屏幕的宽度(通过故事板,我将左右约束设置为0) 我试过了:
imageView.frame = CGRect(x: 0, y: 0, width: imageView.frame.width, height: imageView.frame.width)
但它不起作用。不确定这是我的布局的其余部分(图像是在堆栈视图中)还是我的代码的问题。
答案 0 :(得分:0)
代码不起作用,因为imageView.frame.width
为0.您可以将堆栈视图约束的方面设置为1:1,并将图像视图的左右约束设置为堆栈视图在故事板中为0。
答案 1 :(得分:0)
根据我的经验,autolayout不会与设置框架混在一起;可以说,整个观点是框架是基于自动布局约束设置的。
更重要的是,我想我对你想做的事情有一个模糊的概念:
对于一些背景知识,UIImageView元素具有"内在的"尺寸,设置为其中显示的图像的大小,如果没有其他约束,将采用这些尺寸。如果您没有为UIStackView指定大小,它将根据其中元素的内在大小进行调整大小;如果你指定它的大小,它将尝试调整其中的元素以适应它。
要实现上述方案,您需要将宽度设置为UIStackView(例如,将其约束为与容器视图相同的宽度) - 这将强制将相同的宽度应用于UIImageView。
UIImageView的高度仍将基于其显示的图像的高度。要使UIImageView为方形,可以将宽高比约束设置为1:1。
祝你好运,如果我误解了你想要达到的目标或是否需要进一步澄清,请告诉我。