在我的iPhone应用程序上,我仅限于项目目标部署信息
下的肖像我只想在横向上有一个页面,我使用supportedInterfaceOrientations方法来获取它。
标准实施:
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.Landscape
}
除iPhone 6+外,它适用于所有iPhone设备和iOS版本。从不调用supportedInterfaceOrientations方法。
我无法找到任何可能影响iPhone 6+的原因,任何提示都会受到极大的影响。
答案 0 :(得分:3)
你可以试试这个适合我的代码
// you have to import foundation
import Foundation
class YourViewController : UIViewController {
var device = self.platform()
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(true)
if device.lowercaseString.rangeOfString("iphone6plus") != nil {
supportedInterfaceOrientations()
}
}
// add this method to your view controller
func platform() -> String {
var sysinfo = utsname()
uname(&sysinfo) // ignore return value
return NSString(bytes: &sysinfo.machine, length: Int(_SYS_NAMELEN), encoding:
NSASCIIStringEncoding)! as String
}
请注意,这不会在模拟器上运行,但会在实际设备上完美运行。
答案 1 :(得分:-1)
查看this question,请尝试以下代码段:
- (NSUInteger) supportedInterfaceOrientations
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
// iPhone 5S and below: 320x480
// iPhone 6: 375x667
// iPhone 6 Plus: 414x736
CGSize screenSize = [UIScreen mainScreen].bounds.size;
// The way how UIScreen reports its bounds has changed in iOS 8.
// Using MIN() and MAX() makes this code work for all iOS versions.
CGFloat smallerDimension = MIN(screenSize.width, screenSize.height);
CGFloat largerDimension = MAX(screenSize.width, screenSize.height);
if (smallerDimension >= 400 && largerDimension >= 700)
return UIInterfaceOrientationMask.Landscape;
else
return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
}
else
{
// Don't need to examine screen dimensions on iPad
return UIInterfaceOrientationMask.Landscape;
}
}
缺少正式的Apple API,这是我提出的解决方法:
[代码]
该片段简单地假设尺寸高于半任意选择尺寸的屏幕适合旋转。半随意,因为400x700的门槛包括iPhone 6 Plus,但不包括iPhone 6。
虽然这个解决方案相当简单,但我完全喜欢它,因为它缺乏复杂性。我并不需要准确区分设备,所以任何聪明的解决方案(例如Jef's answer中的解决方案对我来说都是过度的。
我所做的只是将第一和第三个返回值从UIInterfaceOrientationMaskAll
更改为UIInterfaceOrientationMask.Landscape
。