我创建了一个自定义类UIView,以便我可以从viewController类中获取一部分图像。我创建了UIView,我想在viewController类中放大并命名为@IBOutlet属性xRaySuperView:UIView!我使用故事板嵌入了Magnifier:UIView自定义类视图。
然后我在自定义放大镜类中实例化了一个viewController对象。但是,当我尝试转换xRaySuperView的图层并在上下文中呈现它时,构建失败并在展开可选值时声明'意外为零'。
看来我的xRaySuperView没有将图层值传递给Magnifier类。 (信息技术是
这是在构建期间创建错误的最后一行。
import UIKit
import QuartzCore
class MagnifierView: UIView {
var viewController: ViewController!
// First Step: Initialize the UIView
required init?(coder aDecoder: NSCoder) {
// Create instance of ViewController Class
let viewController = ViewController()
super.init(coder: aDecoder)
// Makes the circle-shape outline.
self.layer.borderColor = UIColor.blue.cgColor
self.layer.borderWidth = 4
self.layer.cornerRadius = 65 //1/2 the width of the frame
self.layer.masksToBounds = true
}
// Perform transforms on the xray view
override func draw(_ rect: CGRect) {
let xrayContext = UIGraphicsGetCurrentContext()
xrayContext?.translateBy(x: self.frame.size.width / 2, y: self.frame.size.height / 2)
xrayContext?.scaleBy(x: 1.5, y: 1.5)
self.viewController.xRaySuperView.layer.render(in: xrayContext!)
}
}
答案 0 :(得分:3)
当您使用ViewController()
时,您只是创建一个对象,而不是填写其出口(除非init
中有ViewController
代码才能这样做)。您需要从storyboard或.xib文件中实例化ViewController
,或者 - 更有可能 - 将现有实例传递给此类。