繁体   English   中英

查看未重绘

[英]View not getting redrawed

我有一个视图,我需要向右移动102点才能显示菜单,所以我每次调用新视图时都只调用一个偏移量。 它一直有效,直到进行了一些构建,我们更改了使视图中断的某些内容。 由于无法尝试撤消正在修复另一件事的操作,因此需要修补视图。

当我在应用偏移量(使用po self.view.frame)后打印视图时,我可以看到偏移量已正确应用,但是视图不会向我显示该偏移量,除非我再次对其进行更改(转到另一个屏幕或旋转设备)。

func resizeAndOffset() {
        let appDelegate = UIApplication.appDelegate()
        let offset = UIApplication.appDelegate().offset

        self.view.frame = CGRectMake(offset, 0, appDelegate.window!.frame.width-offset, appDelegate.window!.frame.height)
        //self.view.frame = CGRectOffset(self.view.frame, offset, 0)

        self.navigationController?.navigationBar.frame = CGRectMake(offset, 0, appDelegate.window!.frame.width-offset, self.navigationController!.navigationBar.frame.height)
    }

这是我调整大小并移动视图的地方。

func rotated() {
        if UIDevice.currentDevice().userInterfaceIdiom == .Pad {
            resizeAndOffset()
        }
    }

每当屏幕改变方向时,我都会调用它。

我还调用了viewDidLoad()和viewDidAppear()的resize函数。

我还有别的地方要打电话吗? 在哪里可以强制重画整个屏幕?

将setNeedsDisplay()添加到函数的底部:

func resizeAndOffset() {
    let appDelegate = UIApplication.appDelegate()
    let offset = UIApplication.appDelegate().offset

    self.view.frame = CGRectMake(offset, 0, appDelegate.window!.frame.width-offset, appDelegate.window!.frame.height)
    //self.view.frame = CGRectOffset(self.view.frame, offset, 0)

    self.navigationController?.navigationBar.frame = CGRectMake(offset, 0, appDelegate.window!.frame.width-offset, self.navigationController!.navigationBar.frame.height)

    self.view.setNeedsDisplay()
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM