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 框架的主要内容,如果未能解决你的问题,请参考以下文章
来自 xib 文件的自动调整信息窗口大小取决于 swift 中的内容
swift - 在UIScrollView上从xib添加UIView后如何更新约束?
swift 初始化UIView的Swift子类,在.xib中设计