gpt4 book ai didi

ios - View drawRect 仅在延迟后调用

转载 作者:行者123 更新时间:2023-11-29 11:51:54 25 4
gpt4 key购买 nike

我制作了一个实现自定义绘图的 UIView 子类。这是代码(请不要介意这可以通过 UIImageView 完成。我删除了所有额外的代码只是为了显示问题)

@IBDesignable
class TPMSkinnedImageView: UIView {
private var originalImage:UIImage?
private var skinnedImage:UIImage?

@IBInspectable var image: UIImage? {
set {
originalImage = newValue

if(newValue == nil) {
skinnedImage = nil
return
}

skinnedImage = originalImage!

self.invalidateIntrinsicContentSize()
self.setNeedsDisplay()
}

get {
return originalImage
}
}

override func draw(_ rect: CGRect) {
let context:CGContext! = UIGraphicsGetCurrentContext()
context.saveGState()
context.translateBy(x: 0, y: rect.height)
context.scaleBy(x: 1, y: -1)
context.draw(skinnedImage!.cgImage!, in: rect)
context.restoreGState()
}

override var intrinsicContentSize: CGSize {
if(skinnedImage != nil) {
return skinnedImage!.size
}

return CGSize.zero
}
}

我在 viewcontroller nib 文件中实例化此 View 并以模态方式显示 viewcontroller。

draw 方法只会在父 View 在屏幕上显示大约 20 秒时才会被调用。

我检查了 intrinsicContentSize,它没有返回 .zero

这是堆栈在被调用后的样子:

enter image description here

知道是什么原因造成的吗?

最佳答案

尝试在 View Controller 的 viewWillAppear() 中对 View 调用 setNeedsDisplay()

关于ios - View drawRect 仅在延迟后调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40764562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com