uitabbarcontroller - iOS - Portrait Locked Tab Controller App Won't Allow Landscaped Movie Player -
i have app purely tab bar controller 5 tabs (views). want views portrait only. however, app allow video clips played , uses mpmovieplayerviewcontroller so. can't player rotate landscape!
i have tried following (along lot of other things): subclassing mpmovieplayerviewcontroller , overriding shouldautorotatetointerfaceorientation method class.
allowing app have landscape orientation, attempt lock tab views portrait (doesn't lock them, allows them go landscape don't want).
i have scoured stackoverflow , google days now! familiar issue , how movie player rotate???
try implementing uiviewcontroller containment. designate viewcontroller of tab showing movie in parent (or container) viewcontroller.
you want override shouldautorotatetointerfaceorientation in subclass allow landscape, sounds have done. in parent view controller , tabbarcontroller want make sure forwarding autorotate methods subclass. can check putting nslog in subclasses implementation of shouldautorotatetointerfaceorientation.
then, when want show video, add subclass of mpmovieplayerviewcontroller it.
when load subclass of movies player, try doing in parent view controller:
[self addchildviewcontroller:self.subclassedmovieplayerviewcontroller]; [self.view addsubview:self.currentviewcontroller.view]; [self.subclassedmovieplayerviewcontroller didmovetoparentviewcontroller:self];
or if want animate change can this:
cgrect viewframe=self.subclassedmovieplayerviewcontroller.view.frame; cgfloat viewheight=inputviewframe.size.height; cgrect newframe=cgrectmake(0, self.view.frame.size.height, viewframe.size.width, viewframe.size.height); self.subclassedmovieplayerviewcontroller.view.frame=newframe; [self addchildviewcontroller:self.subclassedmovieplayerviewcontroller]; cgrect offsetrect=cgrectoffset(newframe, 0, -inputviewheight); [self.view addsubview:self.subclassedmovieplayerviewcontroller.view]; [uiview animatewithduration:0.2 animations:^{ self.subclassedmovieplayerviewcontroller.view.frame=offsetrect; } completion:^(bool finished){ [self.subclassedmovieplayerviewcontroller didmovetoparentviewcontroller:self]; }];
of course have set frame view subclass of movies player view controller before add it.
then when want remove it:
[self.subclassedmovieplayerviewcontroller willmovetoparentviewcontroller:nil]; [self.subclassedmovieplayerviewcontroller.view removefromsuperview]; [self.subclassedmovieplayerviewcontroller removefromparentviewcontroller];
good luck
t
Comments
Post a Comment