Hoe kan ik toestaan dat mijn universele app, geschreven in Swift op iOS 8.3 SDK, alleen de portretmodus op iPhone ondersteunt, maar zowel de portret- als de landschapsmodus op de iPad?
Ik weet dat dit in het verleden is gedaan in AppDelegate. Hoe kan ik dit doen in Swift?
Antwoord 1, autoriteit 100%
Je kunt het programmatisch doen, of beter nog, je kunt eenvoudig de Info.plist van je project bewerken (wat praktischer zou moeten zijn, aangezien het een globale apparaatconfiguratie is)
Voeg gewoon de toets “Ondersteunde interface-oriëntaties (iPad)” toe
Antwoord 2, autoriteit 7%
Je zou het programmatisch kunnen doen
override func shouldAutoRotate() -> Bool {
if UIDevice.currentDevice().userInterfaceIdiom == .Pad {
return true
}
else {
return false
}
}
en dan
override func supportedInterfaceOrientations() -> Int {
return UIInterfaceOrientation.Portrait.rawValue
}
of een andere draairichting die u standaard wilt hebben.
Dat zou moeten detecteren of het apparaat dat je gebruikt een iPad is en alleen draaien op dat apparaat toestaan.
BEWERKEN: aangezien je alleen portret op iPhone wilt,
override func supportedInterfaceOrientations() -> Int {
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
return UIInterfaceOrientation.Portrait.rawValue
}
else {
return Int(UIInterfaceOrientationMask.All.rawValue)
}
}
Antwoord 3, autoriteit 6%
Ik weet niet zeker of het antwoord van Chris werkt door de sleutel “Supported Interface Orientaties (iPad)” te kopiëren en plakken; waarschijnlijk niet afgaand op de XML-bron van info.plist
. voor het bereiken van verschillende oriëntatieondersteuning. u kunt de info.plist
XML-bron openen en als volgt bewerken:
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
En er is een gemakkelijke benadering van xcode UI. Ga naar je projectinstellingen. selecteer uw doel op het tabblad “Algemeen” en vervolgens kunt u in het gedeelte “Deployment Info” eerst iphone/ipad selecteren en de apparaatoriëntaties markeren die u voor elk apparaat afzonderlijk wilt ondersteunen en vervolgens de apparaten wijzigen in “Universeel”. het zal de bovenstaande XML onder de motorkap genereren.
de optie “Universeel” hier toont de selecties die gebruikelijk zijn tussen iPhone en iPad.
Antwoord 4
Ik weet dat dit in het verleden is gedaan in AppDelegate. Hoe kan ik dit doen in Swift?
De taal die u gebruikt, verandert niets aan de architectuur van de toepassing. U doet dit in Swift op dezelfde manier als in Objective-C, namelijk door te implementeren:
optional func application(_ application: UIApplication,
supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int
in uw aanvraag gemachtigde.
Antwoord 5
Als je dit wilt instellen voor een specifieke ViewController (alles toestaan op iPad maar alleen staand op iPhone) in Swift 4:
override var supportedInterfaceOrientations:UIInterfaceOrientationMask {
return UIDevice.current.userInterfaceIdiom == .pad ? UIInterfaceOrientationMask.all : UIInterfaceOrientationMask.portrait
}