English 中文(简体)
setOrientation problem
原标题:

I have a really strange orientation issue. I have a sequence of view controllers under a navigation controller. One of them can take any orientation. When I m leaving the orientation I have to use setOrientation. The funny thing is the rotation takes place as the transition occurs to the next page. This isn t normally a problem except for a single case -- from UIDeviceOrientationPortraitUpsideDown to normal causes all my top mounted items to migrate up about an eighth of a page.

There are three ways I think I could fix it:

  1. Somehow separate the setOrientation from my pushViewController call (so the new view doesn t need to flip)
  2. Set my items to be anchored at the top of the device in a better manner (I checked and they appear to be)
  3. Reset the Y dimension on the elements on the ViewDidLoad method but that seems wrong.

Here s my push the new view onto the stack code:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait]; 

ResultSelect_ViewController *resultSelect = [[ResultSelect_ViewController alloc] initWithNibName:@"ResultSelect" bundle:nil];
[self.navigationController pushViewController:resultSelect animated:YES];

Anybody else find it odd that the simulator doesn t allow you to test the upside down to portrait behavior?

最佳回答

The way to avoid the rotation bug when rotating from upside down to portrait is not to do it. Instead, rotate twice stopping halfway (say UIDeviceOrientationLandscapeRight). The question of timing is not to use sleep but instead implement didRotateFromInterfaceOrientation and fire the second rotation (or push to next view) at that point.

问题回答

Just to note: Apple started using a static (maybe even dynamic) analyzer and blocks apps that use private methods (e.g. setOrientation:) from entering the store. Happened to a friend of mine last week.

Have you tried building against iPhone OS 3.0 and relying only on shouldRotateToInterfaceOrientation:? The behaviour seems to be fixed (compared to the implementation in 2.x) and - at least for me - does the job.

Typically you wouldn t support the upside down orientation. That seems to be the standard Apple app behavior and makes sense. The upside down case is not really useful and can cause confusion to the user.

We had a similar problem where subviews would migrate up and down the main view when flipping through the upside down case. We just stopped supporting upside down and that basically solved the problem.





相关问题
Code sign Error

I have created a new iPhone application.I have two mach machines. I have created the certificate for running application in iPhone in one mac. Can I use the other mac for running the application in ...

ABPersonViewController Usage for displaying contact

Created a View based Project and added a contact to the AddressBook using ABAddressBookRef,ABRecordRef now i wanted to display the added contact ABPersonViewController is the method but how to use in ...

将音频Clips从Peter改为服务器

我不禁要问,那里是否有任何实例表明从Peit向服务器发送音响。 I m不关心电话或SIP风格的解决办法,只是一个简单的袖珍流程......

• 如何将搜查线重新定位?

我正试图把图像放在搜索条左边。 但是,问题始于这里,搜索条线不能重新布署。

热门标签