Comments 19
Думаю это многим пригодится!
Благодарю за хорошую и полезную статью!
P.S. Можно ли все это проделать в коде, не используя storyboard?
Благодарю за хорошую и полезную статью!
P.S. Можно ли все это проделать в коде, не используя storyboard?
+1
Можно и в коде.
1. Есть протокол UITraitEnvironment и метод:
который следит за изменениями текущего trait collection.
2. А для изменения UITraitCollection вручную можно проделать следующее:
либо так:
1. Есть протокол UITraitEnvironment и метод:
traitCollectionDidChange:(UITraitCollection *)previousTraitCollection
который следит за изменениями текущего trait collection.
2. А для изменения UITraitCollection вручную можно проделать следующее:
UITraitCollection *horizontalSizeClass = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassCompact];
[self setOverrideTraitCollection:horizontalSizeClass forChildViewController:self.viewController];
либо так:
UITraitCollection *verticalSizeClass = [UITraitCollection traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassCompact];
UITraitCollection *horizontalSizeClass = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassCompact];
NSArray *traitCollectionArray = [NSArray arrayWithObjects:verticalSizeClass, horizontalSizeClass, nil];
UITraitCollection *combinedTraits = [UITraitCollection traitCollectionWithTraitsFromCollections:traitCollectionArray];
[self setOverrideTraitCollection:combinedTraits forChildViewController:self.viewController];
+1
Я бы посоветовал еще юзать вторым окном Preview, чтобы было видно результаты изменений в реальном времени
0
Согласе, Preview очень полезная штука, тем более в Xcode 6 можно просматривать результат одновременно на всех семействах устройств, при чем с их же портретными ориентациями, что очень удобно!
0
Статья полезная!
В тексте закралась ошибка: а их ширина через чур велика
В тексте закралась ошибка: а их ширина через чур велика
0
Чувствую, теперь больше времени будет уходить на расстановку кнопочек, чем на написание кода.
0
Вместо того, чтобы упростить описание интерфейса путем переноса этого самого описания в декларативный код (xaml в качестве примера), Apple накрутила еще одну неочевидную сущность :( И так «верстать» iOS UI было тяжко, а стало еще запутанней. И не понять, толи это наследие, которое навсегда останется с разработчиком, толи оптимизация (тобиш потребуем от разработчика как можно больше данных, зато железке будет проще из переваривать), толи я чего-то не понимаю/не осилил. Но вот честно, мне проще ручками описать xml с версткой, чем работать с эпловским UI дизайнером. Может порекомендуете чего толкового почитать на эту тему? Или там дзен достигается лишь путем проб и ошибок?
Автору за статью огромное спасибо. Познавательно и полезно.
Автору за статью огромное спасибо. Познавательно и полезно.
0
Xaml, по крайне мере на десктопе очень мощная штука, к примеру, засунуть в button grid нет сложности, но из-за этого дикий overhead.
Думаю, что Apple бьется за эффективное использование ресурсов. Смотрел сессию с WWDC 2014 где рассказывали про blur использованные в UX iOS7,8 (центр уведомлений, control center), приводили примеры как и почему это очень ресурсоёмкая штука. А т.к. blur-ы очень модная сейчас вещь, то представляю, как дизайнер может накрутить в xaml 2-3 плоскости с блюром перекрывающие друг друга, тут то fps у интерфейса и просядет, и аккумулятора побольше скушает.
Думаю, что Apple бьется за эффективное использование ресурсов. Смотрел сессию с WWDC 2014 где рассказывали про blur использованные в UX iOS7,8 (центр уведомлений, control center), приводили примеры как и почему это очень ресурсоёмкая штука. А т.к. blur-ы очень модная сейчас вещь, то представляю, как дизайнер может накрутить в xaml 2-3 плоскости с блюром перекрывающие друг друга, тут то fps у интерфейса и просядет, и аккумулятора побольше скушает.
0
Скажите, пожалуйста, как различить программно в какой у нас ориентации iPad c помощью UITraitCollection?
0
Именно с помощью UITraitCollection различить не получится, так как при его использовании HorizontalSizeClass и VerticalSizeClass будет == regular. В итоге, в какой ориентации б iPad не был, SizeClasses всегда будут regular. Более того при подключении протокола UITraitEnvironment и запуске приложения на iPad, метод:
при смене ориентации вызываться НЕ будет.
- (void) traitCollectionDidChange:(UITraitCollection *)previousTraitCollection
при смене ориентации вызываться НЕ будет.
0
Так вот я и думаю если надо разный лайаут в разных ориентациях ipad то что делать?
0
В интернете подсказывают два решения проблемы
1) ориентироваться на viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:
2) проверять в viewDidLayoutSubviews и обновлять layout
1) ориентироваться на viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:
2) проверять в viewDidLayoutSubviews и обновлять layout
0
Спасибо. Первый способ выглядит привлекатльным, но как-то всё равно не то…
0
Sign up to leave a comment.
Введение в Size Classes в Xcode 6