PinLayout Performance

PinLayout

Change Log

1.10.3

Released on 2022-06-07

Fix Xcode Live Preview

Fix an error while using Xcode live preview with PinLayout. An internal class has been renamed.

Added by Luc Dion in Pull Request #251

1.10.2

Released on 2022-02-01

Renamed property pin.keyboardMargins -> pin.keyboardArea

This new name better represent what UIKit's UIView.keyboardLayoutGuide is

Added by Luc Dion in Pull Request #243

1.10.1

Released on 2022-02-01

New property pin.keyboardMargins

Added by baegteun in Pull Request #238

1.10.0

Released on 2021-05-18

New Objective-C interface

Instead of using verbose Objective-C with all brackets ([ ]):

[[[[[[logo.pinObjc top] left] width:100] aspectRatio] marginWithTop:topLayoutGuide + 10 horizontal:10 bottom:10] layout];

It now use a function chaining:

logo.pinObjc.topInsets(safeArea).leftInsets(safeArea).width(100).aspectRatio().margin(margin).layout();

Added by protosse in Pull Request #229

1.9.4

Released on 2021-05-17

1.9.3

Released on 2020-12-17

Fix an issue with Automatic Sizing

1.9.0

Released on 2019-10-03

Automatic Sizing (UIView only)

1.8.11

Released on 2019-10-03

Improve method that validates width and height values

1.8.10

Released on 2019-09-16

Usage UIView.effectiveUserInterfaceLayoutDirection to detect RTL

1.8.9

Released on 2019-08-16

Upgrade to Swift 5

Added by Luc Dion in Pull Request #195

1.8.8

Released on 2019-06-25

Update Swift Package Manager support for Xcode 11

1.8.7

Released on 2019-03-02

Add missing Objective-C API methods

1.8.6

Released on 2018-09-29

Update support for Swift 4.2

The PinLayout pod doesn't specify anymore the Swift language version.

PinLayout supports Swift versions:

1.8.5

Released on 2018-09-27

Minor internal changes

Remove sizeToFit() from SizeCalculable protocol. This change ensure that PinLayout pin.sizeToFit() method behave correctly. As per the iOS documentation, we should not directly override sizeToFit() but rather always only implement sizeThatFits(_:) for auto-sizing needs. This update aim to remove the sizeToFit() requirement in the SizeCalculable protocol.

1.8.4

Released on 2018-09-25

Minor changes

1.8.3

Released on 2018-08-28

Add methods to layout a view between two other views

Add methods to position a view between two other views, either horizontally or vertically.

New Methods:

Example:

   view.pin.verticallyBetween(viewA, and: viewB, aligned: .center).marginVertical(10)

See Readme for more information

1.8.2

Released on 2018-08-25

Add pin.readableMargins and pin.layoutmargins

Add properties:

Add examples using these properties: pinlayout_example_layout_margins_all

pinlayout_example_tableview_readable_content_all

1.8.1

Released on 2018-08-23

PinLayout Swift 3 support

PinLayout supports Swift 3 and Swift 4

1.8.0

Released on 2018-08-21

Deprecated method fitSize() has been removed

fitSize() has been removed after being deprecated for 10 months. sizeToFit(:FitType) should now be used instead. See Adjusting size.

Plus:

1.7.12

Released on 2018-08-16

Add Animations documentation and example

Add documentation that explains how PinLayout can handle view's animations.

1.7.11

Released on 2018-08-05

Method that position multiple edges now accept an offset parameter.

The offset parameter that specifies the distance from their superview's corresponding edges in pixels.

New methods:

For example, to position a view at the top left corner with a top and left margin of 10 pixels:

   view.pin.topLeft(10)

Other change

Cleanup the interface by using default value parameters.

1.7.10

Released on 2018-07-17

Add sizeToFit() method.

The method adjust the view's size based on the result of the method UIView.sizeToFit(). Particularly useful for controls/views that have an intrinsic size (label, button, ...).

1.7.9

Released on 2018-06-28

Fix a regression

The recent changes to PinLayout that enable the layout of CALayer has impacted the layout of UIViews.

1.7.8

Released on 2018-06-26

Add support for CALayer layout

PinLayout can now layouts CALayer's. All PinLayout's properties and methods are available, with the following exceptions:

See CALayer Support documentation for more information

1.7.7

Released on 2018-06-19

Refactoring using generics

Refactoring to avoid having to deal directly with view types, making it easier to extend layouting to other APIs (e.g: CALayer)

1.7.6

Released on 2018-06-12

PinLayout has moved to the layoutBox organization

PinLayout is now part of the same organization as other open source projects related to layout using Swift.

Refactor source code that handle size adjustment.

Add an example using wrapContent() methods

Refactor views frame/bounds access

1.7.5

Released on 2018-06-05

Add wrapContent() methods that adjust view's width & height to wrap all its subviews

The following methods are useful to adjust view's width and/or height to wrap all its subviews. These methods also adjust subviews position to create a tight wrap.

Methods:

See documentation for more information

Added by Luc Dion in Pull Request #141

1.7.4

Released on 2018-05-26

Objective-C support for macOS and tvOS

Add the support of Objective-C to macOS and tvOS.

Added by Luc Dion in Pull Request #138

1.7.3

Released on 2018-04-25

Add few missing Objective-C Interface properties and methods

These methods and properties are now accessible from Objective-C:

Added by Luc Dion in Pull Request #135

1.7.2

Released on 2018-04-23

Fine tune UIView.pin.safeArea support for iOS 8 and "New Relic" framework

Changes:

Added by Luc Dion in Pull Request #134

1.7.0

Released on 2018-04-20

Add macOS support

PinLayout now support macOS.

PinLayout support of macOS is not complete at 100%, see here the particularities of the current implementation:

All other PinLayout's methods and properties are available on macOS!

Added by Luc Dion in Pull Request #131

PinLayout now use MIT license

The PinLayout license has been changed from BSD 3-clause "New" to MIT License.

1.6.0

Released on 2018-03-22

UIView.pin.safeArea

PinLayout can handle easily iOS 11 UIView.safeAreaInsets, but it goes further by supporting safeAreaInsets for previous iOS releases (including iOS 7/8/9/10) by adding a property UIView.pin.safeArea. PinLayout also extend the support of UIView.safeAreaInsetsDidChange() callback on iOS 7/8/9/10.

See UIView.pin.safeArea Documentation for more details.

Added by Luc Dion in Pull Request #125

Add methods taking UIEdgeInset as parameter

Add margins method with percentage parameter

1.5.9

Released on 2018-02-18

UIView.pin versus UIView.pinFrame

Until now UIView.pin was used to layout views, but there's also another property called UIView.pinFrame that does something slightly different in situations where the view has a transform (UIView.transform, scaling, rotation, ...).

See https://github.com/layoutBox/PinLayout#uiviews-transforms for more informations.

Added by Luc Dion in Pull Request #122

1.5.8

Released on 2018-01-20

1.5.7

Released on 2018-01-19

1.5.5

Released on 2018-01-12

Add methods:

1.5.4

Released on 2017-12-28

1.5.3

Released on 2017-12-28

1.5.2

Released on 2017-12-22

1.5.1

Change

See PinLayout in Xcode Playgrounds documentation for more information

1.5.0

New method sizeToFit(:FitType) & fitSize() is now deprecated

Changes

1.4.3

Fix Carthage support

1.4.2

Change

Add method that can pin multiples edges:

1.4.1

Change

1.4.0

Change

1.3.2

Change

1.3.1

Change

1.3.0

Released on 2017-08-18.

Change

Previously hCenter(0) wasn't equal to hCenter(), same thing for vCenter(0). But this was an exception: top(0) == top(), left(0) == left(), right(0) == right(). Now thay all have the same logic.

1.2.4

Change

1.2.3

Change

1.2.2

Change

1.2.1

Change

1.2.0

Released on 2017-08-18.

Change

1.1.5

Released on 2017-07-14.

Change

1.1.4

Released on 2017-07-09.

Change

1.1.1

Released on 2017-06-27.

Change

1.1.0

Released on 2017-06-18.

Change

1.0.15

Released on 2017-06-12.

Change

1.0.14

Released on 2017-06-12.

Change

1.0.11

Released on 2017-06-08.

Change

Fixes

1.0.7

Released on 2017-06-06.

Fixes