[英]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.