Всем доброго времени суток. Столкнулся с такой проблемой. После прочтения пары статей по адаптации понял, что можно изменять констрейнты и размеры шрифта под разные классы устройств, но что делать, если устройства находятся в одном классе? Допустим iPhone 6 и iPhone 5 находятся в одном классе wC hR, но констрейнты и размеры шрифта подходящие для шестерки велики для пятерки. Пожалуйста посоветуйте новичку - какими инструментами я могу воспользоваться, чтобы решить эту проблему. Заранее спасибо за помощь.
Адаптация под разные устройства из одного класса. Заранее спасибо
Спасибо. То есть насколько я понял нужно создать разные сториборды под разные устройства?
Сначала пролистал, простите, что поспешил с вопросом. Выглядит сложновато, но постараюсь разобраться.
Прочитал полностью всю тему, но особой ясности для меня как для новичка не прибавилось. Есть отрезки кода, которые как я понял нужно вставить в AppDelegate. Но потом непонятно, что с этим делать. Люди с большим опытом делятся нюансами упуская очевидные для них, но очень неочевидные для меня детали применения. Не хочу вас утруждать, но не могли бы вы немного разжевать. Я думаю это будет полезно не только для меня но и для остальных еще совсем зеленых как я ios разработчиков. Заранее спасибо.
Вставил вот такой отрезок кода в 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
}
Но я не понимаю какие мои следующие действия.
В теме ничего об этом не написано.
Ну это тебе каждый раз нужно писать будет писать этот код, проще создать класс и вызывать где нужно
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
На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.
В теме написано
А зачем на каждый айфон свой борд? По моему с констрейнами и лейаутом, достаточно двух бордов: айфон и айпад. И то лишь для того, что на йападе не совсем уместно смотрится телефонная реализация и его лучше верстать отдельно!
Я вам дал ссылку на код, который определяет какой девайс в данном времени используется, значит что для этого[quote=“Eduardbondarenko, post:1, topic:3786”]
что можно изменять констрейнты и размеры шрифта под разные классы устройств, но что делать, если устройства находятся в одном классе?
[/quote]
нужно сделать? Определить модель (в теме было 2 способа) телефона и в зависимости от этого менять.
Теперь по скриншоту. У вас две ошибки - почему вы их не загуглили а спрашиваете здесь? Почему вы не прочти об extentions
перед тем как использовать?
Насчет экстеншена тупанул, вспомнил, что его не внутри нужно писать. Но так или иначе я все равно не понимал что делать с той кучей кода дальше.
На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.
Так устройства в одном классе находятся wC hR. Для них действуют одни и те же констрейнты и шрифты…
На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.
Спасибо. Я прочитаю подробнее про то, как правильно их применять. Но я не понимаю зачем столько неудобств… почему разработчики икскода просто не сделали возможность полного редактирования интерфейса под каждое устройство. Нажимаешь на iPhone 6 допустим и редактируешь параметры как тебе угодно. И данные изменения будут применяться только для него…
Там это есть, называется size classes, но это более сложная тема. Нужно серьезно изучать и вникать в нее.
Насколько я понимаю мы про них и говорили. Проблема в том, что нельзя делать изменения для устройств находящихся в одном классе. По моему было бы проще если бы Vary for Traits сохраняла абсолютно все изменения сделанные в ней…
На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.