Адаптация под разные устройства из одного класса. Заранее спасибо


#1

Всем доброго времени суток. Столкнулся с такой проблемой. После прочтения пары статей по адаптации понял, что можно изменять констрейнты и размеры шрифта под разные классы устройств, но что делать, если устройства находятся в одном классе? Допустим iPhone 6 и iPhone 5 находятся в одном классе wC hR, но констрейнты и размеры шрифта подходящие для шестерки велики для пятерки. Пожалуйста посоветуйте новичку - какими инструментами я могу воспользоваться, чтобы решить эту проблему. Заранее спасибо за помощь.


#2

#3

Спасибо. То есть насколько я понял нужно создать разные сториборды под разные устройства?


#4

Вы тему и комментарии читали?


#5

Сначала пролистал, простите, что поспешил с вопросом. Выглядит сложновато, но постараюсь разобраться.


#6

Прочитал полностью всю тему, но особой ясности для меня как для новичка не прибавилось. Есть отрезки кода, которые как я понял нужно вставить в AppDelegate. Но потом непонятно, что с этим делать. Люди с большим опытом делятся нюансами упуская очевидные для них, но очень неочевидные для меня детали применения. Не хочу вас утруждать, но не могли бы вы немного разжевать. Я думаю это будет полезно не только для меня но и для остальных еще совсем зеленых как я ios разработчиков. Заранее спасибо.


#7


#8

Вставил вот такой отрезок кода в appDelegate :
func grabStoryboard() -> UIStoryboard {

        let screenHeight: Int = Int(UIScreen.mainScreen().bounds.size.height)
        var storyboard: UIStoryboard
        switch screenHeight {
            // iPhone 4s    
        case 480:
            storyboard = UIStoryboard.init(name: "iPhone4", bundle: nil)
            // iPhone 5s    
        case 568:
            storyboard = UIStoryboard.init(name: "iPhone5", bundle: nil)
        // iPhone 6    
        case 667:
            storyboard = UIStoryboard.init(name:"iPhone6", bundle: nil)
        // iPhone 6 Plus
        case 736:
            storyboard = UIStoryboard.init(name:"iPhone6Plus", bundle: nil)
        default:
        // it's an iPad        
            storyboard = UIStoryboard.init(name:"iPad", bundle: nil)
    }

return storyboard

}
Но я не понимаю какие мои следующие действия.
В теме ничего об этом не написано.


#9

Ну это тебе каждый раз нужно писать будет писать этот код, проще создать класс и вызывать где нужно

class DeviceType {
 
    class var isIphone5Type: Bool { // 5, 5s, SE
        return UIScreen.main.bounds.height == 568.0
    }
    
    class var isIphone6and7Type : Bool { //6,6s,7
        return  UIScreen.main.bounds.height == 667.0
    }
    
    class var isIphonePlusType : Bool { //6+,6s+,7+
        return  UIScreen.main.bounds.height == 736.0
    }
    
}

DeviceType.isIphone5Type

#10

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#11

В теме написано

А зачем на каждый айфон свой борд? По моему с констрейнами и лейаутом, достаточно двух бордов: айфон и айпад. И то лишь для того, что на йападе не совсем уместно смотрится телефонная реализация и его лучше верстать отдельно!

Я вам дал ссылку на код, который определяет какой девайс в данном времени используется, значит что для этого[quote=“Eduardbondarenko, post:1, topic:3786”]
что можно изменять констрейнты и размеры шрифта под разные классы устройств, но что делать, если устройства находятся в одном классе?
[/quote]

нужно сделать? Определить модель (в теме было 2 способа) телефона и в зависимости от этого менять.

Теперь по скриншоту. У вас две ошибки - почему вы их не загуглили а спрашиваете здесь? Почему вы не прочти об extentions перед тем как использовать?


#12

В качестве примера привожу два скриншота iphone6 и iphoneSE


#13

Насчет экстеншена тупанул, вспомнил, что его не внутри нужно писать. Но так или иначе я все равно не понимал что делать с той кучей кода дальше.


#14

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#15

Так устройства в одном классе находятся wC hR. Для них действуют одни и те же констрейнты и шрифты…


#16

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#17

Спасибо. Я прочитаю подробнее про то, как правильно их применять. Но я не понимаю зачем столько неудобств… почему разработчики икскода просто не сделали возможность полного редактирования интерфейса под каждое устройство. Нажимаешь на iPhone 6 допустим и редактируешь параметры как тебе угодно. И данные изменения будут применяться только для него…


#18

Там это есть, называется size classes, но это более сложная тема. Нужно серьезно изучать и вникать в нее.


#19

Насколько я понимаю мы про них и говорили. Проблема в том, что нельзя делать изменения для устройств находящихся в одном классе. По моему было бы проще если бы Vary for Traits сохраняла абсолютно все изменения сделанные в ней…


#20

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.