1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/youngsoft-MyLinearLayout

Клонировать/Скачать
CHANGELOG.md 64 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 16.03.2025 21:22 b07a413

Журнал изменений версий

Журнал всех версий MyLayout будет здесь отслеживаться.


V1.3.5 (2017/04/11)

Добавлено

  1. В свойство shrinkType линейной контейнерной вьюхи MyLinearLayout добавлена поддержка нового перечисления MySubviewsShrink_Space, что позволяет автоматически сжимать расстояние между дочерними вьюшками при размерах последних превышении размеров контейнера. Пример можно найти в последнем тестовом примере (DEMO: AllTest7ViewController).
  2. Добавлены два новых расширенных свойства horzMargin и vertMargin, позволяющие одновременно установить горизонтальные и вертикальные отступы соответственно.

Исправлено

  1. Устранено ограничение #BUG35 в потоковой макетной вьюхе MyFlowLayout, когда количество элементов в последней строке равно количеству элементов в каждой строке, а расстояния между ними не могут быть увеличены.#### Изменено
  2. Улучшена эффективность использования памяти объектами положения и размера макета внутри библиотеки макетов. Теперь каждый объект создаётся только при его использовании, что существенно снижает количество создаваемых объектов и увеличивает производительность и скорость макетирования. Например, оптимизация была проведена для получения типа size class, экранного поворота и доступа к расширенным свойствам макета.
  3. Нормализован и организован код; все внутренние методы переименованы и разделены на категории для удобства управления и понимания.
  4. В версии V1.3.5 некоторые методы и свойства были переименованы для лучшего соответствия стандартам и унификации с TangramKit. Ниже приведён список изменённых имён:--- Класс (class) | Старое имя (old name) | Новое имя (new name) --------------|----------------------|--------------------- UIView(MyLayoutExt) | myTopMargin | myTop UIView(MyLayoutExt) | myLeftMargin | myLeft UIView(MyLayoutExt) | myBottomMargin | myBottom UIView(MyLayoutExt) | myRightMargin | myRight UIView(MyLayoutExt) | myCenterXOffset | myCenterX UIView(MyLayoutExt) | myCenterYOffset | myCenterY UIView(MyLayoutExt) | myCenterOffset | myCenter UIView(MyLayoutExt) | widthDime | widthSize UIView(MyLayoutExt) | heightDime | heightSize UIView(MyLayoutExt) | flexedHeight | wrapContentHeight MyBaseLayout | subviewMargin | subviewSpace MyBaseLayout | subviewVertMargin | subviewVSpace MyBaseLayout | subviewHorzMargin | subviewHSpace MyBaseLayout | leftBorderLine | leftBorderline MyBaseLayout | rightBorderLine | rightBorderline MyBaseLayout | topBorderLine | topBorderline MyBaseLayout | bottomBorderLine | bottomBorderline MyBaseLayout | boundBorderLine | boundBorderline MyBaseLayout | IntelligentBorderLine | intelligentBorderline MyBaseLayout | notUseIntelligentBorderLine | notUseIntelligentBorderline MyBorderline | MyBorderLineDraw | MyBorderline MyGravity | MyMarginGravity | MyGravity MyGravity | MyMarginGravity_XXXX | MyGravity_XXXX MyLinearLayout | averageSubviews: | equalizeSubviews: MyLinearLayout | averageSubviews:inSizeClass: | equalizeSubviews:inSizeClass: MyLinearLayout | averageSubviews:withMargin | equalizeSubviews:withSpace MyLinearLayout | averageSubviews:withMargin:inSizeClass: | equalizeSubviews:withSpace:inSizeClass: MyLinearLayout | averageMargin: | equalizeSubviewsSpace: MyLinearLayout | averageMargin:inSizeClass: | equalizeSubviewsSpace:inSizeClass: MyTableLayout | rowSpacing | subviewVSpace MyTableLayout | colSpacing | subviewHSpace

Извините за все изменения названий. Сейчас все старые свойства и методы помечены как устаревшие, но всё ещё работают и выдают предупреждение.Для обеспечения совместимости с предыдущими версиями можно определить макрос перед включением PCH файла, либо перед объявлением заголовочного файла MyLayout.h, либо в настройках проекта:

#define MY_USEOLDMETHODNOWARNING 1

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

  1. Найдите все MyMarginGravity_ и замените на MyGravity_. Выберите режим "Containing", найдите и замените во всех местах кроме библиотеки MyLayout.
  2. Замените .myLeftMargin, .myRightMargin, .myTopMargin, .myBottomMargin, .myCenterXOffset, .myCenterYOffset, .myCenterOffset соответственно на .myLeft, .myRight, .myTop, .myBottom, .myCenterX, .myCenterY, .myCenter. Выберите режим "Matching".
  3. Замените .widthDime на .widthSize, .heightDime на .heightSize. Выберите режим "Matching".
  4. Замените .subviewMargin на .subviewSpace, .subviewVertMargin на .subviewVSpace, .subviewHorzMargin на .subviewHSpace. Выберите режим "Matching".
  5. Замените MyBorderLineDraw на MyBorderline. Выберите режим "Matching" и не меняйте в MyBaseLayout.h.
  6. Замените .leftBorderLine на .leftBorderline, .rightBorderLine на .rightBorderline, .topBorderLine на .topBorderline, .bottomBorderLine на .bottomBorderline, .IntelligentBorderLine на .intelligentBorderline, .notUseIntelligentBorderLine на .notUseIntelligentBorderline. Выберите режим "Matching".
  7. Замените метод averageSubviews: на equalizeSubviews:, а averageMargin: на equalizeSubviewsSpace:. Обратите внимание, чтобы не менять части MyLinearLayout.h и MyLinearLayout.m.

Версия 1.3.4(04.03.2017)### Добавлено

  1. В layout view добавлен новый метод - (CGRect)estimatedRectForSubview:(UIView *)subview inLayoutSize:(CGSize)size, который используется для оценки frame значения подчиненного view до его добавления в layout view. Этот метод обычно используется для реализации анимации перемещения подчиненных views между layout views. Пример использования см. в демо (DEMO: AllTest4ViewController).

Изменено

  1. Улучшена работа некоторых свойств при установке корневого представления (self.view) в качестве представления контроллера, что может вызывать конфликты ограничений и проблемы с прокруткой при добавлении представления контроллера в прокручиваемое представление.
  2. По умолчанию значение свойства shrinkType в линейном макете MyLinearLayout было изменено с MySubviewsShrink_Average на MySubviewsShrink_None, то есть теперь по умолчанию сжатие отключено.
  3. Исправлено поведение подчиненных представлений в относительном макете, когда установка значения useFrame равна YES приводила к невозможности управления размерами подчиненных представлений.
  4. Улучшены комментарии всех классов, методов, свойств и различных типов данных, а также оптимизированы комментарии во всех демо-примерах.
  5. В макетах представлений и расширенных представлениях добавлены метки IBInspectable для лучшей совместимости с XIB и SB программированием.

Версия 1.3.3(24 февраля 2017)#### Добавлено

  1. В свойстве shrinkType линейного макета MyLinearLayout добавлено новое значение MySubviewsShrink_Auto. Это значение предназначено для решения проблем с горизонтальным линейным макетом, где ширина двух подчинённых представлений неопределена, но требуется, чтобы они не накладывались друг на друга. Подробнее см. пример (DEMO: AllTest7ViewController, пример №4).
  2. В макетах представлений добавлено свойство zeroPadding, которое указывает, будет ли padding учитываться при вычислении размеров макета представления, если нет подчинённых представлений. По умолчанию установлено YES, то есть padding всегда учитывается. При установке NO padding не учитывается при отсутствии подчинённых представлений. Подробнее см. пример (DEMO: LLTest4ViewController).
  3. Добавлены методы initWithFrame для линейных, поточных и плавающих макетов, позволяющие явно задавать рамки этих макетов.
  4. Добавлена поддержка свойств wrapContentHeight и wrapContentWidth для обычных представлений. Эти свойства были перемещены из макетов представлений в расширения для всех представлений. Теперь высота и ширина обычного представления могут зависеть от его внутреннего макета представления. Подробнее см. пример (DEMO: LLTest4ViewController).
  5. Добавлена поддержка автоматического изменения высоты кнопки UIButton при фиксированной ширине.

Изменено

  1. Поддержка установки позиции и размера подвидов в рамках с помощью расширенного свойства marginGravity удалена.Конкретные изменения см. в методах замены в MyFrameLayout.h.
  2. Отменена поддержка расширенного свойства flexedHeight для адаптивной высоты виджета. Высота теперь устанавливается через расширенное свойство wrapContentHeight.
  3. Улучшена реализация некоторых методов установки ограничений на макет через makeLayout.
  4. Исправлена проблема с невозможностью обновления размеров макета после его добавления в неприспособленный для этого контейнер и последующего изменения границ макета.

[V1. 3. 2](https://github.com/youngsoft/MyLinearLayout/releases/tag/1. 3. 2)(2017/1/20)#### Добавлено

  1. В потоковой макетной MyFlowLayout реализовано поддержание пейджированного скроллинга с помощью нового свойства pagedCount, которое поддерживает только ограничивающиеся по количеству потоковые макеты. Соединение pagedCount со свойствами wrapContentHeight и wrapContentWidth позволяет создать различные эффекты пейджированного скроллинга в разных направлениях (подробнее см. DEMO: FLLTest5ViewController).
  2. В линейном макете MyLinearLayout полностью поддерживаются все возможности установки высоты всех дочерних элементов равной ширине, а также добавлена возможность установки ширины дочернего элемента равной его высоте при горизонтальном расположении.

Изменено

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

Исправлено

  1. Устранены проблемы с #BUG30: основная причина — использование отрицательных значений размеров для установки границ виджета, что приводило к ошибкам в положении виджета. Конкретно это проявлялось в неправильном положении виджета.

V1.3.1(2016/12/28)#### Добавлено

  1. В классах MyLayoutPos и MyLayoutSize добавлено новое свойство active, которое указывает, действует ли примененное ограничение.
  2. Добавлен пример использования: ALLTest8ViewController, демонстрирующий метод добавления макетного view controller в неконтейнерный родительский view controller.#### Исправлено
  3. Исправлен баг, связанный с невозможностью корректного позиционирования макетного вьюхауда, добавленного в неконтейнерный родительский вьюхауд, когда установлены свойства wrapContentWidth или wrapContentHeight.

Изменено

  1. Обновлена механика автоматического изменения размера контента contentSize в UIScrollView при добавлении макетного вьюхауда. Теперь значения отступов MyLayoutPos учитываются при вычислении contentSize. Например, если высота макета составляет 100, а значение вертикального отступа myTopMargin равно 10, то после добавления макетного вьюхауда в UIScrollView высота contentSize будет равна 110.

V1.3.0(2016/12/21)

Добавлено

  1. Добавлена поддержка методов lBound, uBound в классе позиционирования layouts MyLayoutPos. Эти методы используются для установки минимальной и максимальной зависимости положения view. Методы lBound, uBound действуют только при настройке child views относительно Relative Layout.
  2. Добавлен пример демонстрации использования методов lBound, uBound: RLTest5ViewController.#### Устранено
  3. Исправлена ошибка вычисления при установке свойства wrapContentWidth и wrapContentHeight равным YES в классе MyPathLayout.
  4. Исправлен баг в классе MyLinearLayout, связанный с неправильным распределением пространства между view при использовании методов разделения пространства и view.
  5. Исправлен баг в классе MyRelativeLayout, когда установлен padding сверху (topPadding) и значение topPos для child view задается как число, то padding сверху игнорируется (BUG#29).
  6. Исправлена проблема с некорректным расчетом высоты child view, когда высота задана как flexedHeight в классе MyRelativeLayout.#### Изменено
  7. Оптимизация производительности при работе с относительными и Frame Layout.

Версия 1.2.9 (5 декабря 2016 года)

Добавлено

  1. В enum типе MyMarginGravity добавлены новые значения MyMarginGravity_Horz_Between, MyMarginGravity_Vert_Between, используемые для описания операций растяжения внутри layout.
  2. Расширены возможности атрибута gravity в классе MyLinearLayout (подробнее см. LLTest3ViewController).
  3. Расширены возможности атрибута gravity в классе MyFlowLayout (подробнее см. FLLTest1ViewController).
  4. Добавлен новый метод в классе MyFlowLayout: - (void)setSubviewsSize:(CGFloat)subviewSize minSpace:(CGFloat)minSpace maxSpace:(CGFloat)maxSpace, который позволяет динамически регулировать промежутки в контент-ограниченном Flow Layout, обеспечивая идеальное соответствие экранам.
  5. Добавлены цели тестирования unit tests и UI unit tests в проекте.

Изменено

  1. Метод - (void)setSubviewFloatMargin:(CGFloat)subviewSize minMargin:(CGFloat)minMargin в классе MyFloatLayout будет считаться устаревшим, замените его новым методом - (void)setSubviewsSize:(CGFloat)subviewSize minSpace:(CGFloat)minSpace maxSpace:(CGFloat)maxSpace.
  2. Атрибут averageArrange в классе MyFlowLayout будет считаться устаревшим, замените его настройками атрибута gravity.
  3. Примеры одного типа функциональности объединены в группы для удобства поиска соответствующих примеров.

Устранено

  1. Устранена проблема с обновлением макета вложенного макетного представления при изменении положения родительского макетного представления.## Версия 1.2.8 (25 ноября 2016)

Изменено

  1. Переименовал класс MyLayoutDime в класс MyLayoutSize.
  2. Изменил метод отладки свойств макета на использование команд po viewobj.myFrame.sizeClass или expr -o -- viewobj.myFrame.sizeClass.

Устранено

  1. Устранил проблему с неверной работой макета при применении координатного преобразования (transform) к вложенному макетному представлению, которое было добавлено в номакетный родительский элемент. В новой версии макет может корректно использоваться вместе с атрибутом transform. Это связано с тем, что в старых версиях конечное расположение макета изменялось через атрибут frame, тогда как в новых версиях все изменения атрибута frame были заменены на два атрибута center и bounds.
  2. Устранил проблему с неточностью сравнения вещественных чисел (==, !=, <=, >=) во время вычисления макета, которая могла привести к некорректному макетированию.
  3. Устранил ошибку в расчетах размеров компонента MyFlowLayout, когда он был настроен на расстояние между элементами и последний ряд (или колонка) был настроен на вес.
  4. Устранил ошибку в расчетах макета компонента MyFrameLayout на iOS7, когда ширина и высота дочернего представления равнялись друг другу и оно было центрировано.## Версия 1.2.7 (13 ноября 2016)

Добавлено

  1. В линейный макет MyLinearLayout добавлено новое свойство shrinkType. Это свойство используется для управления методами сжатия размеров фиксированных видов, когда они превышают размер макета, при наличии относительных расстояний или процентных размеров в дочерних видах. Подробнее см. пример AllTest7ViewController.
  2. В макет добавлен атрибут rotationToDeviceOrientationBlock. Этот блок предоставляет возможность пользователю выполнять обработку макета при первом завершении макета или при повороте экрана. Блок вызывается после первого завершения макета и каждый раз при завершении макета после поворота экрана, поэтому следует обратить внимание на проблему циклических ссылок. Подробнее см. пример LLTest6ViewController.
  3. В классе MyLayoutDime методы uBound и lBound, используемые для установки максимальных и минимальных значений, теперь допускают значения равные самому себе, что позволяет гарантировать, что размер самого вида не будет сжат. Подробнее см. пример AllTest7ViewController.
  4. Добавлена возможность вывода различных свойств макета при отладке с помощью команд po viewObject.absPos.sizeClass или expr -o -- view.absPos.sizeClass.
  5. Добавлена поддержка использования относительных отступов для четырёх сторон макета, когда он является дочерним видом независимого от макета вида.То есть, если значения topPos, rightPos, bottomPos находятся между 0 и 1, то это указывает на использование относительных отступов.
  6. Добавлен новый демонстрационный пример AllTest7ViewController для решения задач совершенной обработки макета на разных устройствах с различными размерами экрана.

Изменено1. В линейной разметке MyLinearLayout убрали ограничение на использование свойства wrapContentWidth или wrapContentHeight, когда в дочерних элементах задана ширина или высота с весом или относительным отступом (подробнее см. приложение AllTest7ViewController).

Устранены проблемы

  1. В горизонтальной линейной разметке MyLinearLayout исправлен баг, связанный с уменьшением ширины фиксированного размера дочернего элемента, если его размер превышает размер родительского элемента.
  2. Исправлен баг в методах uBound и lBound класса MyLayoutDime, который не вычитал значение отступа (padding) при установке максимального и минимального размера.

Версия 1.2.6(28 октября 2016)

Изменено

  1. Для решения конфликта между двумя библиотеками MyLayout и Masonry, когда активирован макрос MAS_SHORTHAND_GLOBALS в Masonry, что делает недоступными методы offset и equalTo. Решение заключается в определении макроса MY_USEPREFIXMETHOD перед использованием MyLayout.h. Это добавляет префикс my ко всем методам классов MyLayoutPos и MyLayoutDime. Например, A.leftPos.equalTo(@10) станет A.leftPos.myEqualTo(@10).

Устранены проблемы

  1. Оптимизация кода и исправление ошибки, связанной с возможностью указывать любой другой виджет в методах uBound и lBound.#### Обновлено

  2. Оптимизация вызова методов beginLayoutBlock и endLayoutBlock, а также решение проблемы циклического использования этих блоков. Также проведена оптимизация метода viewLayoutCompleteBlock для предотвращения циклического использования.

Устранены проблемы

  1. Исправлена проблема с неверным расположением элементов при установке свойства скрытия (hidden) для элемента разметки, особенно когда этот элемент является дочерним элементом относительной разметки.

Версия 1.2.4(18 августа 2016)

Добавлено

  1. В浮动布局 MyFloatLayout добавлена новая свойство noBoundaryLimit, которое позволяет реализовать сценарии однонаправленного плавающего поведения без ограничений границ (подробнее см. FOLTest6ViewController).
  2. Добавлены два демонстрационных примера: RLTest4ViewController для демонстрации реализации статических областей в прокручиваемых контейнерах и FOLTest6ViewController для демонстрации использования плавающих компонентов в конфигурациях пользователя.

Обновлено

  1. Улучшено методом estimateLayoutRect вычисление размеров вложенных компоновок, что увеличило скорость оценки динамического изменения высоты.

Версия 1.2.3(2 августа 2016)


Исправлено

  1. Исправлена проблема с неверным расчетом размеров элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено вычисление размеров элементов методом calculateSizeForView, что повысило производительность при работе с большими данными.

Версия 1.2.2(30 июля 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода updateConstraints.

Улучшено

  1. Улучшено использование метода layoutIfNeeded, что ускорило процесс перерасчета размеров элементов.

Версия 1.2.1(25 июля 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода setNeedsDisplay.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.2.0(20 июля 2016)

Добавлено

  1. Добавлен новый метод addSubviewWithConstraints, который позволяет добавлять подчиненные элементы с помощью ограничений Auto Layout.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.1.9(15 июля 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.1.8(10 июля 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.1.7(5 июля 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.1.6(30 июня 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.1.5(25 июня 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.1.4(20 июня 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.1.3(15 июня 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.1.2(10 июня 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.1.1(5 июня 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.1.0(30 мая 2016)

Добавлено

  1. Добавлен новый метод addSubviewWithConstraints, который позволяет добавлять подчиненные элементы с помощью ограничений Auto Layout.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.0.9(25 мая 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.0.8(20 мая 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.0.7(15 мая 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.0.6(10 мая 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.0.5(5 мая 2016)

Исправлено

  1. Исправлена проблема с некорректным отображением элементов при использовании метода layoutSubviews.

Улучшено

  1. Улучшено использование метода layoutSubviews, что ускорило процесс перераспределения элементов.

Версия 1.0.4(30 апреля 2016)

Исправлено

  1. Исправ#### Добавлено

  2. Добавлена новая раскладка MyPathLayout: с её помощью можно создать путь, используя уравнение для генерации кривой пути, а также указывать расстояние между подэлементами вдоль этого пути. Это позволяет подэлементам располагаться по указанному пути, что открывает возможности для создания уникальных эффектов. (Дополнительно см. PLTest1,2,3,4ViewController).2. Добавлен новый метод для подэлементов: @property(nonatomic,copy) void (^viewLayoutCompleteBlock)(MyBaseLayout* layout, UIView *v);. Этот метод вызывается после завершения каждого подэлемента и затем автоматически уничтожается. Вы можете использовать этот блок для выполнения различных действий после завершения расстановки подэлементов, таких как анимация или получение значений. (Дополнительно см. RLTest1ViewController, PLTest1ViewController).

  3. Поддержана возможность изменения координат подэлементов через преобразование (transform). При использовании этого свойства можно контролировать размер и положение подэлементов.

Обновлено

  1. Улучшены возможности автоматического управления границами. Если вы установите свойство subviewMargin, система будет автоматически делить границы пополам. (Дополнительно см. TLTest3ViewController).

Изменено

  1. Атрибут базового класса расстановки adjustScrollViewContentSize был отмечен как устаревший и заменён на использование нового свойства adjustScrollViewContentSizeMode.

Исправлено

  1. Исправлена проблема при расстановке элементов в линейной раскладке, когда размер контейнера меньше размера одного из подэлементов и подэлемент имеет установленное значение weight.

V1.2.2(2016/7/8)#### Добавлено

  1. В раскладке MyFlowLayout теперь поддерживаются весовые коэффициенты (weight) для подэлементов. Коэффициент weight определяет долю свободного пространства, которое занимает каждый подэлемент. Это позволяет использовать потоковую раскладку вместо линейной для многих случаев, тем самым уменьшая количество уровней расстановки. (Дополнительно см. FLLTest4ViewController).2. Добавлено свойство для обратного порядка расстановки подэлементов: @property(nonatomic, assign) BOOL reverseLayout;. Это свойство позволяет выполнять расстановку подэлементов в обратном порядке относительно их добавления. (Дополнительно см. AllTest4ViewController).

Устранено

  1. Устранена проблема с вычислением веса в плавающем макете MyFloatLayout, заменив последовательность операций от вычитания отступа после умножения пропорции до умножения пропорции перед вычитанием отступа.

Версия 1.2.1(28 июня 2016)

Добавлено

  1. В вертикальной линейной компоновке добавлена поддержка A.heightDime.equalTo(A.widthDime). Поддержка отсутствует в горизонтальной линейной компоновке.

Изменено

  1. Оптимизирована структура кода, что повысило его читаемость.

Устранено

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

Версия 1.2.0(13 июня 2016)#### Устранено

  1. Устранена проблема с вертикальной линейной компоновкой, когда одновременно установлены myLeftMargin, myRightMargin и gravity=MyMarginGravity_Vert_Center. Та же проблема наблюдается в горизонтальной линейной компоновке.

Версия 1.1.9(11 июня 2016)

Добавлено

  1. Добавлена поддержка международной локализации для демо.

Версия 1.1.8(8 июня 2016)

Добавлено

  1. Добавлен метод setSubviewFloatMargin для плавающего макета MyFloatLayout (подробнее см. FOLTest4ViewController).

Устранено

  1. Устранены проблемы с сочетанием таблицы макета MyTableLayout и умной границы (подробнее см. TLTest3ViewController).

Версия 1.1.7(6 июня 2016)#### Добавлено

  1. Добавлены два свойства для управления расстоянием между строками таблицы: rowSpacing и колонками: colSpacing. Эти свойства позволяют установить расстояние между строками и столбцами в таблице. (Детали см. TLTest2ViewController)

  2. Внесены изменения в методы для создания анимации при применении макета: layoutAnimationWithDuration, который позволяет реализовать анимацию при создании макета. (Детали см.: все демо)

  3. Расширено использование свойства flexedHeight для UIImageView. При установке значения flexedHeight равным YES, высота UIImageView будет автоматически корректироваться пропорционально ширине при выполнении макета. Это особенно полезно при реализации водопадной структуры. (Детали см. TLTest2ViewController)

  4. Для плавающего макета MyFloatLayout добавлены три новых свойства: subviewMargin, subviewVertMargin, subviewHorzMargin, чтобы установить горизонтальное и вертикальное расстояние между виджетами в плавающем макете. (Детали см. FOLTest4ViewController, FOLTest5ViewController)

  5. Добавлена возможность установки максимального и минимального размера для подвиджетов внутри макета. Новые методы lBound, uBound в MyLayoutDime предоставляют более мощные возможности по сравнению с прежними методами min, max. Они позволяют не только устанавливать константные ограничения размера, но также использовать объекты для ограничения размера. (Детали см. AllTest2ViewController, AllTest3ViewController)
    6.Система автоматически решает большую часть возможных конфликтов ограничений макета, что снижает вероятность возникновения таких конфликтов. Также система выдаёт предупреждение и сообщение об ошибке при возникновении конфликта ограничений.#### Обновлено

  6. Оптимизация отступов при плавающем расположении в линейном макете, с поддержкой автоматической корректировки ширины. (Детали см.: AllTest3ViewController)

  7. Улучшение установки положения и размера макета при добавлении его в независимый от макета родительский элемент. Вы можете использовать методы myXXXMargin, а также myHeight и myWidth для установки положения и размера в независимом от макета родительском элементе.

  8. Изменение названий методов управления таблицами addRow:colSize: и insertRow:colSize:atIndex, замена colWidth на colSize. (Детали см.: TLTest2ViewController)

  9. Изменение специальных значений размеров таблиц в макросах: MTLSIZE_XXXX. (Детали см.: TLTest1ViewController, TLTest2ViewController)

  10. Перепись всех комментариев в коде для лучшего понимания.

  11. Перепись большинства примеров DEMO.

Исправлено

  1. Временная проблема с автоматическим закреплением плавающего макета при добавлении его в UIScrollView была исправлена.

  2. Коррекция проблемы с некорректной оценкой высоты при вложении относительного макета внутри другого макета.

  3. Исправление ошибки при вычислении высоты и ширины в линейном макете.## Версия 1.1.6(2016/5/3)

  4. Добавлен метод _equalTo_ в классе MyLayoutDime, который позволяет сравнивать объект с самим собой. Например, a.widthDime.equalTo(a.widthDime).add(10); означает, что конечная ширина представления a будет равна ширине её содержимого плюс 10. Такой подход не приводит к циклическому обращению и используется там, где требуется расширение размера на основе текущего размера содержимого (подробнее см.: FLLTest2ViewController).

  5. В потоковом макете MyFlowLayout были добавлены возможности растяжения отступов, размеров и автоматического расположения для решения проблемы заполнения пробелов между элементами строки. Для активации растяжения отступов необходимо установить значение свойства gravity как MyMarginGravity_Horz_Fill или MyMarginGravity_Vert_Fill; для активации растяжения размеров — установить значение свойства averageArrange как YES; а для активации автоматического расположения — установить значение свойства autoArrange как YES (подробнее см.: FLLTest2ViewController).

  6. Добавлена новая расширенная характеристика представления noLayout. Установка значения этой характеристики как YES означает, что подпредставление будет участвовать в макете, но фактические изменения положения и размера будут игнорироваться, а основной макет будет сохранять пространство для этого подпредставления.Эта характеристика используется вместе с useFrame для реализации некоторых эффектов анимации (подробнее см.: FLLTest3ViewController).

  7. Макетный контейнер MyFrameLayout теперь поддерживает установку значений wrapContentHeight и wrapContentWidth как YES.

  8. В макетном представлении добавлен новый параметр highlightedOpacity, который указывает уровень непрозрачности при высветлении события касания (подробные примеры см.: AllTest1ViewController).

  9. Исправлен баг в компоненте MyTableLayout.

  10. Все комментарии в библиотеке макетов были переформатированы и скорректированы.

  11. Оптимизированы некоторые вопросы производительности в макетах.

  12. Удалено совместимое использование устаревшего кода. ## [V1. 1. 5](https://github.com/youngsoft/MyLinearLayout/releases/tag/1. 1. 5) (2016/4/7)

  13. Добавлен новый макет MyFloatLayout, который позволяет располагать нерегулярные подэлементы и карточки. Концепция была вдохновлена свойством CSS float в HTML.

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

  15. Устранены проблемы с некорректным вычислением значений wrapContentHeight и wrapContentWidth.

  16. Исправлена проблема с некорректным вычислением ширины leftBorderLineLayer.

  17. Добавлен метод clear в классах MyLayoutDime и MyLayoutPos для быстрого удаления всех настроек.

  18. Оптимизированы производительность и скорость.## V1.1.4 (2016/3/10)

  19. Исправлен баг в функции оценки размера estimateLayoutRect, которая некорректно работала при многократном вложении.

  20. Добавлен атрибут myMargin для простой и быстрой установки одинаковых значений для myLeftMargin, myTopMargin, myRightMargin и myBottomMargin.

  21. Введен класс инструментов MyDimeScale для масштабирования размеров и положений на разных экранах. Это позволяет адаптироваться к различным устройствам, таким как iPhone 6, где высота может быть увеличена на iPhone 6 Plus и уменьшена на iPhone 5.## V1.1.3 (2016/2/22)

  22. Добавлена поддержка SizeClass для портретного режима MySizeClass_Portrait и пейзажного режима MySizeClass_Landscape. Это позволяет отдельно настраивать интерфейсы для горизонтального и вертикального режимов, особенно полезно для iPad.

V1.1.2 (2016/2/18)

  1. Полностью обновлено приложение, добавлена поддержка SizeClass, что позволяет обеспечивать идеальную адаптацию для устройств Apple различных размеров. Поддержка SizeClass реализована на основе возможностей Apple, поэтому она доступна только в версиях iOS 8 и выше.

  2. В потоковом распределении MyFlowLayout добавлена возможность использования метода заполнения контейнера с учетом содержимого. Когда arrangedCount установлено значение 0, это указывает на использование метода заполнения контейнера с учетом содержимого.

  3. Добавлен новый расширенный атрибут представления mySize, чтобы упростить одновременную установку значений myWidth и myHeight.

  4. Базовый класс размещения MyLayoutBase переименован в MyBaseLayout.

  5. Устранены проблемы, связанные с возможной бесконечной рекурсии при создании производных классов от MyLinearLayout или MyFlowLayout.

  6. Добавлена поддержка свойства autoresizesSubviews для представлений размещения.Это свойство по умолчанию установлено как YES; если его значение NO, то представление размещения не будет выполнять никаких действий по размещению, то есть все значения frame для подчинённых представлений будут окончательными результатами размещения. Эта функциональность используется главным образом для реализации анимации подчинённых представлений.

  7. Устранены другие ошибки. ## [V1.1.1]

  8. Добавлен новый атрибут mySize для установки ширины и высоты layouts, что эквивалентно одновременному заданию myWidth и myHeight.

  9. Устранены проблемы с неправильной позиционировкой при использовании вместе с AutoLayout в iOS, теперь версия может совместно работать как с frame, так и с AutoLayout.

  10. Внесены исправления других мелких проблем, а также улучшена и завершена документация.

  11. Переименованы методы leftMargin, rightMargin, topMargin, bottomMargin, width, height, centerXOffset, centerYOffset, centerOffset для решения конфликтов имён. В новой версии все эти методы имеют префикс my. Для использования старых методов можно определить макросы: #define MY_USEOLDMETHODDEF 1 и #define MY_USEOLDMETHODNOWARNING 1.

  12. Переопределены типы перечислений MarginGravity и LineViewOrientation на MyMarginGravity и MyLayoutViewOrientation соответственно. Для обратной совместимости можно использовать макросы #define MY_USEOLDENUMDEF 1 и #define MY_USEOLDENUMNOWARNING 1. ## [V1.1.0]

  13. Добавлен новый поточный макет MyFlowLayout.В линейном макете добавлена возможность установки горизонтального центрирования по ширине экрана и вертикального центрирования по высоте экрана с помощью свойства gravity.

  14. Добавлена возможность установки фонового изображения для макета backgroundImage и выделенного фонового изображения highlightedBackgroundImage.

  15. Добавлены ограничения максимального max и минимального min значений смещения view и размера constraint.

  16. Добавлен метод оценки размеров макета estimateLayoutRect и возможность установки оценочного rect значения для view.

  17. Добавлена возможность установки высоты и ширины подмакетов в рамках макета frame layout, позволяющая задавать высоту или ширину как масштабированное значение от высоты или ширины родительского макета, а также возможность задания равной высоты и ширины.

  18. Добавлена возможность установки отступа между равномерно распределёнными подмакетами subviewMargin в линейном макете.

  19. Добавлена возможность исключения некоторых подмакетов из процесса макетирования путём установки свойства useFrame в YES.

  20. Добавлена возможность установки целевых объектов при нажатии setTouchDownTarget и отмене нажатия setTouchCancelTarget для макета.

  21. Добавлена возможность установки расстояния между равномерно распределёнными подмакетами averageSubviews в линейном макете.

  22. Добавлен метод очистки настроек макета resetMyLayoutSetting.

  23. Устранено использование большого объёма памяти при макетировании.Исправлено отсутствие эффекта прокрутки при добавлении UIScrollView внутри макета.

  24. Оптимизированы решения конфликтов ограничений.

  25. Оптимизирована функциональность корректировки положения и размера макета при его добавлении к некорневому макету.

  26. Исправлено отсутствие перерисовки интерфейса при восстановлении скрытых подмакетов.

  27. Исправлено отображение отступа границ макета.

  28. Исправлены возможные проблемы при добавлении макета в UITableView и UICollectionView.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/youngsoft-MyLinearLayout.git
git@api.gitlife.ru:oschina-mirror/youngsoft-MyLinearLayout.git
oschina-mirror
youngsoft-MyLinearLayout
youngsoft-MyLinearLayout
master