2015-03-17 3 views
0

Я проектирую два макета для контроллера вида, используя два класса размера. Для некоторых видов существует несколько свойств, которые я хотел бы иметь разные значения в зависимости от класса размера.Изменение свойств вида в зависимости от класса размера

Например, есть ярлык, который должен быть выровнен по центру в одном классе размеров, но выравнивается по правому краю в другом; Фон представления должен иметь значение альфа/полупрозрачность в одном классе, а другое значение - в другом классе.

Однако похоже, что эти свойства не могут быть установлены с учетом класса размера, который я сейчас редактирую. Если я изменю его в одном классе, это отразится и на других.

Есть ли подходящий способ, или, может быть, обходной путь (программно?), Который позволяет мне устанавливать разные значения для разных классов?

ответ

0

Вы можете сделать это программно путем проверки значения экрана bounds и применяя соответствующие изменения:

 if UIScreen.mainScreen().bounds.size.width == 768 { 
      // iPad, which corresponds to the regular class 
      myImage.alpha = 1.0 
     } else { 
      // Every iPhone model, which is the compact class 
      myImage.alpha = 0.5 
     } 

Или еще точнее:

 if UIScreen.mainScreen().bounds.size.height == 480 { 
      // iPhone 4 
     } else if UIScreen.mainScreen().bounds.size.height == 568 { 
      // iPhone 5 
     } else if UIScreen.mainScreen().bounds.size.width == 375 { 
      // iPhone 6 
     } else if UIScreen.mainScreen().bounds.size.width == 414 { 
      // iPhone 6+ 
     } else if UIScreen.mainScreen().bounds.size.width == 768 { 
      // iPad 
     } 
1

AFAIK, единственное, что вы можете изменить в IB, основанный на классах размеров, представляет собой виды в иерархии, их размеры/позиции и текстовые шрифты.

Вы можете проверить класс размера программно в своем контроллере вида с помощью self.traitCollection.horizontalSizeClass и self.traitCollection.verticalSizeClass и изменить свойства представления на основе значений.

Вы также захотите реализовать willTransitionToTraitCollection:withTransitionCoordinator: для обработки возможных изменений в классе размера после появления представления.

Смежные вопросы