0
Компоновка UI        Дмитрий Захаров,   iOS Lead Engineer, e-Legion (dmitry.zakharov@e-legion.com)
iPhone 5
Решения < iOS 6• Springs and Struts в Interface Builder• Autoresizing Mask в Code• - (void)layoutSubviews { ... }
Springs and struts              Autoresizing mask                     typedef enum UIViewAutoresizing {                   ...
Проблемы S&S
Проблемы S&S
Проблемы S&S
Проблемы S&Sif (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {        CGRect rect = self.topLeftView.frame; ...
Решение:Cocoa Autolayout.
Autolayout? Что это?• Это другое мышление (setFrame:,  setCenter:, setBounds:)• Больше возможностей по сравнению с  S&S• П...
Constraints на примере
Подробнее о                Autolayout•   LayoutManager оперирует системами линейных    уравнений и нестрогих неравенств   ...
Подробнее о            Autolayout• Layout равняет по границе  выравнивания (alignment rects): • intrinsicContentSize • ali...
Interface Builder
Interface Builder
Проблемы CAL• Ambiguent Constraints (insufficient)• Unsatisfiable Constraints (conflicts)
Решение: Приоритетыenum {     UILayoutPriorityRequired = 1000,     ...DefaultHigh = 750,     ...DefaultLow = 250,     ...F...
Приоритеты при изменении      собственных размеров•Content Hugging Priority•Content CompressionResistance Priority
Visual Format Language• ASCII-art подобный способ задания  [buttonA]-[buttonB]  |-[buttonA(<=200@100)]-(10)-  [buttonB(==b...
Пример “жесткого”              кодаconstraint = [NSLayoutConstraint constraintWithItem:button1                            ...
Отладка• Unsatisfiable Constraints: Exceptions• Ambiguent Constraints: Run multiple times, or • – constraintsAffectingLayou...
Upcoming SlideShare
Loading in...5
×

Дмитрий Захаров «Компоновка элементов пользовательского интерфейса»

941

Published on

Видео и расшифровка по ссылке: http://mbltdev.ru/presentations/34

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
941
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript of "Дмитрий Захаров «Компоновка элементов пользовательского интерфейса»"

    1. 1. Компоновка UI Дмитрий Захаров, iOS Lead Engineer, e-Legion (dmitry.zakharov@e-legion.com)
    2. 2. iPhone 5
    3. 3. Решения < iOS 6• Springs and Struts в Interface Builder• Autoresizing Mask в Code• - (void)layoutSubviews { ... }
    4. 4. Springs and struts Autoresizing mask typedef enum UIViewAutoresizing { UIViewAutoresizingNone, ...FlexibleLeftMargin, ...FlexibleWidth, ...FlexibleRightMargin, ...FlexibleTopMargin, ...FlexibleHeight, ...FlexibleBottomMargin };
    5. 5. Проблемы S&S
    6. 6. Проблемы S&S
    7. 7. Проблемы S&S
    8. 8. Проблемы S&Sif (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) { CGRect rect = self.topLeftView.frame; rect.size.width = 210; rect.size.height = 120; self.topLeftView.frame = rect;  rect = self.topRightView.frame; rect.origin.x = 250; rect.size.width = 210; rect.size.height = 120; self.topRightView.frame = rect;  rect = self.bottomView.frame; rect.origin.y = 160; rect.size.width = 440; rect.size.height = 120; self.bottomView.frame = rect; } else { ... }
    9. 9. Решение:Cocoa Autolayout.
    10. 10. Autolayout? Что это?• Это другое мышление (setFrame:, setCenter:, setBounds:)• Больше возможностей по сравнению с S&S• Поддержка IB: программируем мышкой• Visual Format Language• Поддержка отладки
    11. 11. Constraints на примере
    12. 12. Подробнее о Autolayout• LayoutManager оперирует системами линейных уравнений и нестрогих неравенств y = | ≤ | ≥ k • x + b k, b ∈ D • x, b одно из: • left, right, top, bottom • width, height • leading, trailing • centerX, centerY, baseline
    13. 13. Подробнее о Autolayout• Layout равняет по границе выравнивания (alignment rects): • intrinsicContentSize • alignmentRectForFrame: • alignmentRectInsets
    14. 14. Interface Builder
    15. 15. Interface Builder
    16. 16. Проблемы CAL• Ambiguent Constraints (insufficient)• Unsatisfiable Constraints (conflicts)
    17. 17. Решение: Приоритетыenum { UILayoutPriorityRequired = 1000, ...DefaultHigh = 750, ...DefaultLow = 250, ...FittingSizeLevel = 50};typedef float UILayoutPriority;
    18. 18. Приоритеты при изменении собственных размеров•Content Hugging Priority•Content CompressionResistance Priority
    19. 19. Visual Format Language• ASCII-art подобный способ задания [buttonA]-[buttonB] |-[buttonA(<=200@100)]-(10)- [buttonB(==buttonA)]-(5)-|• приоритет читаемости над полнотой
    20. 20. Пример “жесткого” кодаconstraint = [NSLayoutConstraint constraintWithItem:button1 attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:button2 attribute:NSLayoutAttributeLeft multiplier:1.0 constant:-12.0];[view addConstraint:constraint];
    21. 21. Отладка• Unsatisfiable Constraints: Exceptions• Ambiguent Constraints: Run multiple times, or • – constraintsAffectingLayoutForAxis: • – hasAmbiguousLayout • – exerciseAmbiguityInLayout
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×