2016-03-21 15 views
0

Bu projede çalışıyorum ve Storyboard'da bir sahnem var.Mülkler için çalışıyor ancak çerçeve için çalışmıyor

Sahne, TableViewController'tır.

  • Tablo görünümünde, özel bir prototip hücresi vardır (CustomCell.swift'e bağlı).

    • Prototip hücresinin içinde bir etiket ve özel UIView (CustomView.swift'e bağlı) var. Bu öğelerin prototip hücresinin contentView ile ilgili düzen kısıtlamaları vardır.

Şimdi, malzeme değiştirmek için benim özel görünüm üzerinde çiziliyor istediğinizde görünüm boyutunu değiştirir, cihaz o yeni hücre genişliğine ayarlanır döndüğünde böylece. Kısıtlamalar nedeniyle, CustomCell, aygıt döndürüldükten sonra boyutu değiştirdiğinde CustomView çerçevesi değişecektir. Bu algılamak için, ben CustomView.swift iki özellik gözlemci ekledi: Aygıtı çevirdiğinizde

override var frame: CGRect { 
    didSet { 
     print("Frame was set!") 
     updateDrawing() 
    } 
} 

override var bounds: CGRect { 
    didSet { 
     print("Bounds were set!") 
     updateDrawing() 
    } 
} 

projeyi çalışan, ikinci gözlemci çalışıyor. İlk gözlemci yok. Sorum şu: İlk gözlemci çerçevenin değiştiğini neden tespit etmiyor?

cevap

2

.frame, görünümün (ve dönüştürmenin) .bounds ve .center cinsinden hesaplanır, dolayısıyla değişmez. Rotasyona tepki vermek için bu (iOS8'den başlayarak):

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 
    super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator) 

    coordinator.animateAlongsideTransition({ (coordinator) -> Void in 
     // do your stuff here 
     // here the frame has the new size 
    }, completion: nil) 
} 
İlgili konular