ios - How to translate this objective c traitCollection to swift? -
i trying translate code in objective c link, sizing class ipad portrait , landscape modes
here code trying translate:
@interface rdtraitcollectionoverrideviewcontroller : uiviewcontroller { bool _willtransitiontoportrait; uitraitcollection *_traitcollection_compactregular; uitraitcollection *_traitcollection_anyany; } @end @implementation rdtraitcollectionoverrideviewcontroller - (void)viewdidload { [super viewdidload]; [self setupreferencesizeclasses]; } - (void)setupreferencesizeclasses { uitraitcollection *traitcollection_hcompact = [uitraitcollection traitcollectionwithhorizontalsizeclass:uiuserinterfacesizeclasscompact]; uitraitcollection *traitcollection_vregular = [uitraitcollection traitcollectionwithverticalsizeclass:uiuserinterfacesizeclassregular]; _traitcollection_compactregular = [uitraitcollection traitcollectionwithtraitsfromcollections:@[traitcollection_hcompact, traitcollection_vregular]]; uitraitcollection *traitcollection_hany = [uitraitcollection traitcollectionwithhorizontalsizeclass:uiuserinterfacesizeclassunspecified]; uitraitcollection *traitcollection_vany = [uitraitcollection traitcollectionwithverticalsizeclass:uiuserinterfacesizeclassunspecified]; _traitcollection_anyany = [uitraitcollection traitcollectionwithtraitsfromcollections:@[traitcollection_hany, traitcollection_vany]]; } -(void)viewwillappear:(bool)animated { _willtransitiontoportrait = self.view.frame.size.height > self.view.frame.size.width; } - (void)viewwilltransitiontosize:(cgsize)size withtransitioncoordinator:(id<uiviewcontrollertransitioncoordinator>)coordinator { _willtransitiontoportrait = size.height > size.width; } -(uitraitcollection *)overridetraitcollectionforchildviewcontroller:(uiviewcontroller *)childviewcontroller { uitraitcollection *traitcollectionforoverride = (_willtransitiontoportrait) ? _traitcollection_compactregular : _traitcollection_anyany; return traitcollectionforoverride; } @end
and here have, keep in mind renamed of inital variables under class declaration:
import uikit class viewcontroller: uiviewcontroller { var willtransitiontoportrait:bool = false var compactregular = uitraitcollection() var anyany = uitraitcollection() override func viewdidload() { super.viewdidload() // additional setup after loading view, typically nib. setupreferencesizeclasses() } func setupreferencesizeclasses() { var traitcollection_hcompact = uitraitcollection(horizontalsizeclass: uiuserinterfacesizeclass.compact) var traitcollection_vregular = uitraitcollection(verticalsizeclass: uiuserinterfacesizeclass.regular) compactregular = uitraitcollection(traitsfromcollections: [traitcollection_hcompact, traitcollection_vregular]) var traitcollection_hany = uitraitcollection(horizontalsizeclass: uiuserinterfacesizeclass.unspecified) var traitcollection_vany = uitraitcollection(verticalsizeclass: uiuserinterfacesizeclass.unspecified) anyany = uitraitcollection(traitsfromcollections: [traitcollection_hany, traitcollection_vany]) } override func viewwillappear(animated: bool) { willtransitiontoportrait = self.view.frame.size.height > self.view.frame.size.width } override func viewwilltransitiontosize(size: cgsize, withtransitioncoordinator coordinator: uiviewcontrollertransitioncoordinator) { willtransitiontoportrait = size.height > size.width } func overridetraitcollectionforchildviewcontroller(uiviewcontroller) -> childviewcontroller { var traitcollectionforoverride = (willtransitiontoportrait) ? compactregular : anyany return traitcollectionforoverride; } override func didreceivememorywarning() { super.didreceivememorywarning() // dispose of resources can recreated. }
}
i think have last function cant figure out translates to. appreciated.
i think missing "override" in last function, try replace below code:
override func overridetraitcollectionforchildviewcontroller(childviewcontroller: uiviewcontroller) -> uitraitcollection! { // }
here complete code:
import uikit class viewcontroller: uiviewcontroller { var willtransitiontoportrait:bool = false var compactregular = uitraitcollection() var anyany = uitraitcollection() override func viewdidload() { super.viewdidload() // additional setup after loading view, typically nib. setupreferencesizeclasses() } func setupreferencesizeclasses() { var traitcollection_hcompact = uitraitcollection(horizontalsizeclass: uiuserinterfacesizeclass.compact) var traitcollection_vregular = uitraitcollection(verticalsizeclass: uiuserinterfacesizeclass.regular) compactregular = uitraitcollection(traitsfromcollections: [traitcollection_hcompact, traitcollection_vregular]) var traitcollection_hany = uitraitcollection(horizontalsizeclass: uiuserinterfacesizeclass.unspecified) var traitcollection_vany = uitraitcollection(verticalsizeclass: uiuserinterfacesizeclass.unspecified) anyany = uitraitcollection(traitsfromcollections: [traitcollection_hany, traitcollection_vany]) } override func viewwillappear(animated: bool) { willtransitiontoportrait = self.view.frame.size.height > self.view.frame.size.width } override func viewwilltransitiontosize(size: cgsize, withtransitioncoordinator coordinator: uiviewcontrollertransitioncoordinator) { willtransitiontoportrait = size.height > size.width } override func overridetraitcollectionforchildviewcontroller(childviewcontroller: uiviewcontroller) -> uitraitcollection! { // var traitcollectionforoverride = (willtransitiontoportrait) ? compactregular : anyany return traitcollectionforoverride; } override func didreceivememorywarning() { super.didreceivememorywarning() // dispose of resources can recreated. } }
Comments
Post a Comment