Sans enthousiasme
Ce projet n'est plus utilisé par LinkedIn et n'est actuellement pas entretenu.
Layoutkit est une bibliothèque de mise en page rapide pour iOS, macOS et TVOS.
Motivation
LinkedIn a créé Layoutkit parce que nous avons constaté que la mise en page automatique n'est pas suffisamment performante pour des hiérarchies de vue complexes dans des vues de défilement. Pour plus d'informations, lisez le billet de blog.
Avantages
La mise en page présente de nombreux avantages sur l'utilisation de la disposition automatique:
- Rapide : la mise en page est aussi rapide que le code de mise en page manuel et est nettement plus rapide que la disposition automatique.
- Asynchrones : les dispositions peuvent être calculées dans un thread d'arrière-plan afin que les interactions utilisateur ne soient pas interrompues.
- DÉCRARATIF : Les dispositions sont déclarées avec des structures de données immuables. Cela rend le code de mise en page plus facile à développer, à documenter, à réviser le code, à tester, à déboguer, à profil et à maintenir.
- Cacheable : les résultats de la disposition sont des structures de données immuables afin qu'elles puissent être précomputées en arrière-plan et mises en cache pour augmenter les performances perçues de l'utilisateur.
La mise en page offre également des avantages qui le rendent aussi facile à utiliser que la disposition automatique:
- Uikit Friendly : Layoutkit produit des uiViews et fournit également un adaptateur qui le rend facile à utiliser avec UableTView et UICollectionView.
- Internationalisation : LayoutKit ajuste automatiquement les cadres de vue pour les langues de droite à gauche.
- Swift : Layoutkit peut être utilisé dans des applications et des terrains de jeux rapides.
- Testé et prêt à la production : Layoutkit est couvert par des tests unitaires et est utilisé à l'intérieur des versions récentes des applications iOS de recherche d'emploi LinkedIn et LinkedIn.
- Open-source : pas une boîte noire comme la disposition automatique.
- Licence Apache (V2) : Vos avocats seront heureux qu'il n'y ait pas de manigances brevetés.
Bonjour le monde
let image = SizeLayout < UIImageView > ( width : 50 , height : 50 , config : { imageView in
imageView . image = UIImage ( named : " earth.jpg " )
} )
let label = LabelLayout ( text : " Hello World! " , alignment : . center )
let stack = StackLayout (
axis : . horizontal ,
spacing : 4 ,
sublayouts : [ image , label ] )
let insets = UIEdgeInsets ( top : 4 , left : 4 , bottom : 4 , right : 8 )
let helloWorld = InsetLayout ( insets : insets , sublayout : stack )
helloWorld . arrangement ( ) . makeViews ( in : rootView ) 
Limites
Nous avons trouvé que Layoutkit était un outil utile, mais vous devez être conscient de ce qu'il n'est pas.
- Layoutkit n'est pas un système de mise en page basé sur les contraintes. Si vous souhaitez exprimer une contrainte entre les vues, ces vues doivent être des enfants d'une seule mise en page qui implémente le code pour appliquer cette contrainte.
- Layoutkit n'est pas Flexbox, mais vous pouvez trouver des similitudes.
Installation
La mise en page peut être installée avec des cocoapodes ou des carthages.
Cocoapodes
Ajoutez ceci à votre podSpec:
Puis exécutez pod install .
Carthage
Ajoutez ceci à votre carton:
github "linkedin/LayoutKit"
Ensuite, exécutez carthage update .
Documentation
Vous êtes maintenant prêt à commencer à construire une interface utilisateur.