那么,在MenuVIEwController的willRotatetoInterfaceOrIEntation方法中,如何在不使用另一个控制器进行横向模式的情况下更改XIB?
我使用以下代码:
if( toInterfaceOrIEntation != UIInterfaceOrIEntationPortrait ){ MenuVIEwController *landscape = [[MenuVIEwController alloc] initWithNibname: @"MenuVIEwLandscape" bundle:nil ]; [self setVIEw:landscape.vIEw];}else { MenuVIEwController *potrait = [[MenuVIEwController alloc] initWithNibname: @"MenuVIEw" bundle:nil ]; [self setVIEw:potrait.vIEw];}
但是,当我去横向浏览XIB时,景观视图控件没有正确旋转.
解决方法 我不知道这个实现有什么奇怪的副作用,但尝试这样的东西,看看它是否适用于你:-(voID)willRotatetoInterfaceOrIEntation:(UIInterfaceOrIEntation)orIEntation duration:(NSTimeInterval)duration { if (UIInterfaceOrIEntationIsPortrait(orIEntation)) { [[NSBundle mainBundle] loadNibnamed:@"MenuVIEw" owner:self options:nil]; if (orIEntation == UIInterfaceOrIEntationPortraitUpsIDeDown) { self.vIEw.transform = CGAffinetransformMakeRotation(M_PI); } } else if (UIInterfaceOrIEntationIsLandscape(orIEntation)){ [[NSBundle mainBundle] loadNibnamed:@"MenuVIEwLandscape" owner:self options:nil]; if (orIEntation == UIInterfaceOrIEntationLandscapeleft) { self.vIEw.transform = CGAffinetransformMakeRotation(M_PI + M_PI_2); } else { self.vIEw.transform = CGAffinetransformMakeRotation(M_PI_2); } }}
这假定您的MenuVIEw和MenuVIEwLandscape XIB中的文件所有者都设置为MenuVIEwController,并且视图出口也设置在两个XIB中.当使用loadNibnamed时,所有出口都应该在轮换时正确重新连接.
如果您正在为iOS 4构建,还可以使用以下命令替换loadNibnamed行:
UINib *nib = [UINib nibWithNibname:@"MenuVIEw" bundle:nil];UIVIEw *portraitVIEw = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0];self.vIEw = portraitVIEw;
和
UINib *nib = [UINib nibWithNibname:@"MenuVIEwLandscape" bundle:nil];UIVIEw *landscapeVIEw = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0];self.vIEw = landscapeVIEw;
这些假设您想要显示的UIVIEw立即在XIB中的文件的所有者和第一个响应者代理对象之后.
然后,您只需要确保视图在界面方向正确旋转.对于不是默认纵向方向的所有视图,通过设置视图的transform属性并使用CGAffinetransformMakeRotation()与上述示例中所示的适当值进行旋转.
单独的旋转可能会解决您的问题,而不需要额外加载NIB.但是,加载MenuVIEwController的全新实例并将其视图设置为现有的MenuVIEwController视图可能会在生命周期和循环事件中引起一些奇怪的行为,因此您可能会更安全地尝试上述示例.当您只需要从中查看视图时,他们也可以节省创建新的MenuVIEwController实例的麻烦.
希望这可以帮助!
贾斯汀
总结以上是内存溢出为你收集整理的在iPad上使用一个UIViewController和两个XIB处理方向更改全部内容,希望文章能够帮你解决在iPad上使用一个UIViewController和两个XIB处理方向更改所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)