Swift 无法更改 xib uiview 中的 imageview 框架

Posted

技术标签:

【中文标题】Swift 无法更改 xib uiview 中的 imageview 框架【英文标题】:Swift can't change imageview frame inside xib uiview 【发布时间】:2017-01-31 08:21:44 【问题描述】:

我正在使用 Swift 3 并尝试更改我在 xib 中的 UIImageView 宽度和高度

这是我的代码:

let view = Bundle.main.loadNibNamed("Custom", owner: self, options: nil)?[0] as! UIView           
view.frame = CGRect(x: CGFloat(i) * self.sView.frame.size.width, y: self.sView.frame.origin.y, width: self.sView.frame.size.width, height: self.sView.frame.size.height)    

let imageView = view.viewWithTag(1) as! UIImageView

当我尝试像这样更改图像视图框架时

imageView.frame = CGRect(x: imageView.frame.origin.x, y: imageView.frame.origin.y - 40, width: 200, height: imageView.frame.height)

当我尝试运行它时没有任何变化,请帮我解决这个问题

【问题讨论】:

你有没有在这一行得到正确的图像视图:让 imageView = view.viewWithTag(1) as! UIImageView var frame = self. imageView.frame frame.size.width = 100;框架.尺寸.高度 = 100;自己。 imageView.frame = 框架自身。 imageView .setNeedsDisplay() @KKRocks 我已经设置好了,我可以更改imageview的图像没有任何问题,只是不能更改宽度和高度 @karthikeyan 代码不行,已经试了好几次了 第一件事。你一开始能正确显示 imageView 吗?其次,尝试使用 imageView 的边界而不是它的框架,因为它们不使用相同的坐标空间。 imageView.frame = CGRect(x: imageView.bounds.origin.x, y: imageView.bounds.origin.y - 40, width: 200, height: imageView.bounds.height) 【参考方案1】:

我最终在我的 xib 中为我的约束设置标识符 并像这样从我的控制器调用它

for subview in view.subviews 
            for constraint in subview.constraints as [NSLayoutConstraint] 
                if constraint.identifier == "imageWidth" 
                    constraint.constant = view.frame.width * 0.5
                
            
        

我可以通过控制器控制宽度、高度、x 和 y

【讨论】:

非常聪明!但最好为宽度约束配置一个 outlet。然后你会有一个直接引用它,你可以随时改变它的constant

以上是关于Swift 无法更改 xib uiview 中的 imageview 框架的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UIView 不适合屏幕,Swift

来自 xib 文件的自动调整信息窗口大小取决于 swift 中的内容

swift - 在UIScrollView上从xib添加UIView后如何更新约束?

swift 初始化UIView的Swift子类,在.xib中设计

swift 初始化UIView的Swift子类,在.xib中设计

为啥我拖入 xib 文件的任何 UIView 都会变成 iPhone XR?