码:
var loadView = UIView(frame: CGRectMake(0, 0, self.window?.frame.size.width, self.window?.frame.size.height))
我尝试以编程方式创建UIView。尝试设置视图的窗口高度和宽度时,它给出错误为“可选类型’CGFloat的值?” 没有包装;您的意思是使用’!’ 要么 ‘?’?” 为什么显示此错误?需要任何帮助。
您正在使用可选链接,这意味着self.window?.frame.width如果window不是nil,则计算结果为有效整数,否则nil为height。
self.window?.frame.width
window
nil
height
由于您无法使一个CGRect包含nil(或更确切地说,CGRectMake不接受其任何参数的可选参数),因此编译器将其报告为错误。
CGRect
CGRectMake
解决方案是隐式展开self.window:
self.window
var loadView = UIView(frame: CGRectMake(0, 0, self.window!.frame.size.width, self.window!.frame.size.height))
但是,这引起了在该事件运行时错误self.window是nil。用可选的绑定将其包围总是更好的做法:
if let window = self.window { var loadView = UIView(frame: CGRectMake(0, 0, window.frame.size.width, window.frame.size.height)) .... do something with loadVIew }
这样就可以确保仅在self.window实际上不为零时创建视图。