ios - 应用程序转到后台一段时间后,CoreGraphic 绘制的 View 消失

标签 ios swift core-graphics

这是我的观点的代码。

override func draw(_ rect: CGRect) {

    let path = self.getPath()

    path.stroke()
}

func getPath() -> UIBezierPath {

    let path = UIBezierPath()

    path.lineWidth = 1
    path.lineCapStyle = .round
    path.lineJoinStyle = .round
    mainColor.setStroke()
    mainColor.setFill()
    path.move(to: CGPoint(x:0,y:0))

    path.addQuadCurve(to: endPointLeft, controlPoint: controlPointLeft)
    path.addLine(to: startPointRight)
    path.addQuadCurve(to: endPointRight, controlPoint: controlPointRight)
    path.addLine(to: startPointLeft)

    path.fill()
    path.stroke()

    return path
}

效果很好。但有时进入后台一段时间后,该 View 就会消失。

*****更多信息*****

ViewController 有一个功能,可以通过滚动来改变 View 的高度。 改变高度约束后,调用self.view.layoutIfNeeded()

最佳答案

您可以做的是当应用程序确实为第一个添加观察者激活时重新布局 subview ,如下所示在 Controller 中

override func viewDidLoad() {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(self, selector: #selector(applicationDidBecomeActive(_:)), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil)
}

@objc func applicationDidBecomeActive(_ notification:Notification)
{
    self.view.layoutIfNeeded()
}

override func viewWillDisappear(_ animated: Bool) {
    NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil)
}

关于ios - 应用程序转到后台一段时间后,CoreGraphic 绘制的 View 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52269813/

相关文章:

iphone - 从 View 1 切换到蓝牙设置......不可能吗?

ios - 屏幕连接/断开通知是否适用于 iOS 5?

iphone - iPhone 中的 Web SQL 存储

swift - 在 Swift 中没有 switch 语句的 "case"是什么意思?

iphone - iOS:如何创建和绘制(并保存)比屏幕大的图像?

ios - NSPointerFunctionsObjectPointerPersonality 强制 containsObject : method to use isEqual: (doesn't work)

swift - 密码恢复/重置

swift - Realm Sync Facebook 身份验证不起作用

iphone - CATiledLayer 和 UIScrollView,缓存一些缩放级别的旧数据

iphone - 我需要释放从 UIGraphicsGetCurrentContext() 返回的上下文吗?