当 viewController 的视图可见时,视图框架设置不正确
frame of views not set correctly when viewController's views become visible
我正在向现有的 imageView 添加一个 imageView 以完全覆盖它。这是代码,但我不希望你完全理解它,因为它很乱而且并不重要。
var customImageView = returnImageViewWithIdentifier(imageViewIdentier)!
customImageView.bounceImageViewBounds = CGRect(origin: CGPointMake(0, 0), size: CGSize(width: customImageView.frame.width, height: customImageView.frame.height))
customImageView.bounceImageView = UIImageView(frame: customImageView.bounceImageViewBounds)
customImageView.bounceImageView.image = UIImage(named: nameOfImage)
customImageView.hasImage = true
customImageView.startImageViewFrame = customImageView.frame
customImageView.middleView = UIView(frame: customImageView.startImageViewFrame)
customImageView.bounceImageView.clipsToBounds = true
customImageView.bounceImageView.layer.cornerRadius = 3
self.cubeView.addSubview(customImageView.middleView)
customImageView.middleView.addSubview(customImageView.bounceImageView)
快速回顾:customImageView 是被 bounceImageView 遮挡的,它是 customImageView 的一个变量。没关系。
当使用此代码实现按钮的 IB 操作方法并按下时,效果很好。当它在 viewDidLoad、viewDidAppear、vievDidLayoutSubviews 中执行时,它会中断。 bounceImageView(遮挡 customImageView 的那个)稍微向下移动或向右移动大约一英寸 (2.54cm),具体取决于我在何处执行此代码。它不会完全遮盖其下方的 imageView。当所有布局都设置好后执行代码时(例如,当我按下按钮时),它的功能就像预期的那样。
我感觉这与评估约束有关。由于应用程序误解了所有视图的位置,顶视图的框架设置不正确。对于此类问题,我将非常感谢一些调试信息或可能的解决方案。
我已经将代码放在这个函数的闭包中,并在 viewDidAppear 中调用它。
func delay(delay:Double, closure:()->()) {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
}
我不知道为什么会这样。即使我将延迟设置为 0.0,它也能正常工作。主线接缝取悦系统。
我正在向现有的 imageView 添加一个 imageView 以完全覆盖它。这是代码,但我不希望你完全理解它,因为它很乱而且并不重要。
var customImageView = returnImageViewWithIdentifier(imageViewIdentier)!
customImageView.bounceImageViewBounds = CGRect(origin: CGPointMake(0, 0), size: CGSize(width: customImageView.frame.width, height: customImageView.frame.height))
customImageView.bounceImageView = UIImageView(frame: customImageView.bounceImageViewBounds)
customImageView.bounceImageView.image = UIImage(named: nameOfImage)
customImageView.hasImage = true
customImageView.startImageViewFrame = customImageView.frame
customImageView.middleView = UIView(frame: customImageView.startImageViewFrame)
customImageView.bounceImageView.clipsToBounds = true
customImageView.bounceImageView.layer.cornerRadius = 3
self.cubeView.addSubview(customImageView.middleView)
customImageView.middleView.addSubview(customImageView.bounceImageView)
快速回顾:customImageView 是被 bounceImageView 遮挡的,它是 customImageView 的一个变量。没关系。
当使用此代码实现按钮的 IB 操作方法并按下时,效果很好。当它在 viewDidLoad、viewDidAppear、vievDidLayoutSubviews 中执行时,它会中断。 bounceImageView(遮挡 customImageView 的那个)稍微向下移动或向右移动大约一英寸 (2.54cm),具体取决于我在何处执行此代码。它不会完全遮盖其下方的 imageView。当所有布局都设置好后执行代码时(例如,当我按下按钮时),它的功能就像预期的那样。
我感觉这与评估约束有关。由于应用程序误解了所有视图的位置,顶视图的框架设置不正确。对于此类问题,我将非常感谢一些调试信息或可能的解决方案。
我已经将代码放在这个函数的闭包中,并在 viewDidAppear 中调用它。
func delay(delay:Double, closure:()->()) {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
}
我不知道为什么会这样。即使我将延迟设置为 0.0,它也能正常工作。主线接缝取悦系统。