При создании зрения, необходимо определить некоторые методы инициализатора по умолчанию. Определим класс следующим образом:
class TestView: UIView {
var maxX : CGFloat?
var maxY : CGFloat?
override init() {
super.init()
initializeBounds()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initializeBounds()
}
override init(frame: CGRect) {
super.init(frame: frame)
initializeBounds()
}
func initializeBounds()
{
maxX = self.bounds.size.width
maxY = self.bounds.size.height
}
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func drawRect(rect: CGRect) {
// Drawing code
println("maxX: \(maxX!) maxY: \(maxY!)")
}
}
Всякий раз, когда TestView
инициализируется на раскадровке или кодировании TestView
«s свойства получения инициированную.
После добавления вид на вид вашей точки зрения контроллера следующим образом:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var testView : TestView = TestView(frame: CGRectMake(10.0, 10.0, 100.0, 50.0))
testView.backgroundColor = UIColor.redColor()
self.view.addSubview(testView)
}
Журнал дает следующее:
TestView: Maxx: 100,0 MAXY: 50,0
Чтобы избежать репликации кода , initializeBounds()
определяется и вызывается в инициализаторах TestView
:
Это фантастика! Спасибо за помощь мне! – Bren