2015-09-13 6 views
0

Я добавил автоматический макет в свое приложение, и он отлично работает для экранов 4", 4.7 "и 5.5". Тем не менее, когда я тестировал его на 3,5-дюймовом (iPhone 4S), он был грязным. Множество объектов находилось на вершине друг друга. Что я могу сделать? Есть ли способ исключить iPhone 4S при загрузке приложения в iTunes Connect ? будет ли мое приложение будет отклонено, если он не работает на iPhone 4S, так как он по-прежнему поддерживает IOS 9 (Использование Xcode 7 GM)iOS - Autolayout не подходит для экранов 3,5 "

EDIT:

Я сделал еще одну раскадровку под названием «iPhone35» для 3,5 дюйма и добавил этот код функции приложения в AppDelegate.swift, но он всегда открывает Main.storyboard, который на 4 дюйма и выше размеров экрана, даже если я выбрать iPhone 4S симулятор.

let theBounds = UIScreen.mainScreen().bounds 
    let heightDevice = theBounds.size.height 

    if heightDevice == 480 { 
     let wantedStoryboard = UIStoryboard(name: "iPhone35", bundle: nil) 
     let vc = wantedStoryboard.instantiateViewControllerWithIdentifier("MainPage") 
     let rootViewController = self.window!.rootViewController 
     rootViewController?.presentViewController(vc, animated: false, completion: nil) 

    } else { 
     let wantedStoryboard = UIStoryboard(name: "Main", bundle: nil) 
     let vc = wantedStoryboard.instantiateViewControllerWithIdentifier("MainPage") 
     let rootViewController = self.window!.rootViewController 
     rootViewController?.presentViewController(vc, animated: false, completion: nil) 

    } 

что мне делать?

+0

Приложение должно работать с iPhone 4S. Кроме того, если ваше приложение не является универсальным, оно будет работать на iPad с использованием формата iPhone 4S. – vacawama

+0

Тогда что мне делать? Могу ли я создать другую Main.storyboard только для 4S? – SergeH

+0

Один из подходов - создать другой файл раскадровки для 4S. Ищите, как это сделать. Другой - исправить ваши ограничения, чтобы они работали корректно на более коротком экране. Не видя экранов и ограничений, члены SO могут помочь вам. – vacawama

ответ

0

Так что я сделал, было добавление этой функции AppDelegate.swift

func grabStoryBoard() -> UIStoryboard { 

    var storyboard: UIStoryboard 
    let width = UIScreen.mainScreen().width 

    if width == 480.0 { 
     storyboard = UIStoryboard(name: "iPhone35", bundle: nil) 
    } else { 
     storyboard = UIStoryboard(name: "Main", bundle: nil) 
    } 

    return storyboard 

} 

, а затем добавить эти несколько линий внутри didFinishLaunchingWithOptions функционировать

let storyboard: UIStoryboard = self.grabStoryBoard() 
    self.window!.rootViewController = storyboard.instantiateInitialViewController() as UIViewController? 
    self.window!.makeKeyAndVisible() 

И я также нажал "является Initial View Controller «на первом контроллере моей новой раскадровки.

Причина, по которой ширина == 480.0, поскольку мое приложение настроено только на пейзаж.