From c62b1a7a8619a6caeef17bba770f9ae10560d41b Mon Sep 17 00:00:00 2001 From: Denis Chaschin Date: Tue, 25 May 2021 21:20:32 +1000 Subject: [PATCH 1/4] Documentation added --- .../xcschemes/WrappingStack.xcscheme | 91 ++++++++++++++++++ Docs/Resources/wrapping-hstack-macos.png | Bin 0 -> 49286 bytes Readme.md | 59 +++++++++++- Sources/WrappingStack/WrappingHStack.swift | 46 +++++++-- 4 files changed, 186 insertions(+), 10 deletions(-) create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/WrappingStack.xcscheme create mode 100644 Docs/Resources/wrapping-hstack-macos.png diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/WrappingStack.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/WrappingStack.xcscheme new file mode 100644 index 0000000..b693472 --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/WrappingStack.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Docs/Resources/wrapping-hstack-macos.png b/Docs/Resources/wrapping-hstack-macos.png new file mode 100644 index 0000000000000000000000000000000000000000..85eadcd7844548906ef7351cfa756bab54d43353 GIT binary patch literal 49286 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%0Dw z5#)Qu!Q6g_Kf=MNXi_jatu$vYN{o%5%`ZK3hnp9uoUuHkQO6Voq%U?1HJ~L&QI9QK z(BoF%6TfeK70puyrg}f9_U-WqmDNd#jpQK$*zuq$x@Csw^mq2%TEAp%jc21V!E7Di`a5ek7>3v6H34nDS{zWnNNPCZ0LQA+24GLoMD>s zwaOi)VOCweFBnbw#^W*?08i~x<`!9JetL1B@ao#N<>|mrX1U_-1KDLJVF`8btas*D z(EiClRT`urAP0mKYb4!xD)7m<>@uv4$aw5K}D>T&(Xm3al;4Sk_UuC$NuBF0h=Q?$xk%gayV$v$Z~7R>6K}YirsCRbLB8e?fp*o#Shj~D*6xL}MraF-`3pCZ(SC4R5m;aECZd1f7xmvx=%}?C`>1muFcG;S~rnZ<5nXL zt3NICuo%^Vw6369_1-CkN4B&n+UsSvtOTGj4sf`zOsv=u1b{1^$tmL|Sz4NZYcR#E zQ4^b8OV_fL%^+=3Z5mdO>r01Jkeba+uS8NUQA6u;T9 zHNn^T=+c?W{L9Ds9hDL0z<2v_^v$k-o#c8_RC6nXtH#u*Yt9_=43GdGUz}r#^=+p;pme!m$?g{{pCw`BC+P3PRkl z2-anTY+wH>g6_au{+uvk4{Gfj*tOCO&d&bsG7;)m7*NXbYCf z9m!bk!mqH@DxcklkC4qa!Z_n^7bNqPNHni!>CJ{dz%Ay6I~W1hx|9wwb`_Y$or&y; z*^%L)+OXI2*iIu=`y&Uo-+U0$dTv0-A-GC_o z*hlv4p0tSG+iWU+&CBPq#iLqn?5tC%bLPrYf5~8Fp;B||luHE+4UzdRIx37(8lAzyPXsMxG zg1MI#^OaL8B&12~gh-3uCIiEou8Y_1OmLN**^RX1#$>^@RE&aqUZ;J7Dwa4i05?7EP{s)<{B>R$-j@Q0K{C}f_v5@v}A5eawu zbrur}4PlVDX#ev7`|8tKSZrImGQ)lBbkBPHKd$%!wYzfViDB00NX3U8ucJVvTbj{6 zuNUJFx%Ws%4o_jn#t3p$h~**Tapwk&7w{E-?S!&PBWDhv%?Yv;QmY%~ZGJY~CL-id zs~g|i-|E8#uN>5C6nA5-MxSTqDs|{hAooEOzoj!Kvl4bdn_ZCKeN9Q~?{At^ME%l4 z+eM84LB+;kb3kPJ*pa9%Njt7g)c33p4u6sYI!-a}%vjqd{@z-@>2C|ex5)uc(R}fP zfh@$~wH&gybBn?Ys9B*E-R6wp**P;~RGLR0jTOoj@t$;WzW$0+vk5hL;(VAaX4~Sw z8~5UB*3(@`K+Yw41WzNhe8Q$KgTHG8@4s2df|3n&wFQu zC+=cq1p+C1P!b%ujZ~9}xF!3e^K_%xzvS_J8jupRaV_Sl>!9GDxl*N?<{gB zQCH*VX&R*=nm_h?mNNGcHu$XXfvg}o+MxJUO0PUsQo1ohK=$=%O?UMr7N@RD5^F?-m&v)bkrT-1+|c_& zPV>VozoBNt8eZg+N6QneLnG&x6v@6PqP{zMqhG-dLU|3W@M_WpGW^5dBVkwn^?!Hn zRd|oZr*JpF literal 0 HcmV?d00001 diff --git a/Readme.md b/Readme.md index 2958531..7a31ab4 100644 --- a/Readme.md +++ b/Readme.md @@ -1,7 +1,62 @@ -# Swiftui WrappingStack +# SwiftUI WrappingStack ![Swift 5.3](https://img.shields.io/badge/Swift-5.3-FA5B2C) ![Xcode 12.5](https://img.shields.io/badge/Xcode-12-44B3F6) ![iOS 9.0](https://img.shields.io/badge/iOS-8.0-178DF6) ![iPadOS 9.0](https://img.shields.io/badge/iPadOS-8.0-178DF6) ![MacOS 10.10](https://img.shields.io/badge/MacOS-10.10-178DF6) [![Build & Test](https://github.com/diniska/swiftui-wrapping-stack/actions/workflows/test.yml/badge.svg)](https://github.com/diniska/swiftui-wrapping-stack/actions/workflows/test.yml) A SwiftUI Views for wrapping HStack elements into multiple lines. -`WrappingHStack` - provides `HStack` that supports line wrapping +## List of supported views + +* `WrappingHStack` - provides `HStack` that supports line wrapping + +## How to use +### Step 1 +Add a dependency using Swift Package Manager to your project: [https://github.com/diniska/swiftui-wrapping-stack](https://github.com/diniska/swiftui-wrapping-stack) + +### Step 2 +Import the dependency + +```swift +import WrappingStack +``` + +### Step 3 +Replace `HStack` with `WrappingHStack` in your view structure. It is compatible with `ForEach`. + +```swift +struct MyView: View { + + let elements = ["Cat 🐱", "Dog 🐶", "Sun 🌞", "Moon 🌕", "Tree 🌳"] + + var body: some View { + WrappingHStack(id: \.self) { // use the same id is in the `ForEach` below + ForEach(elements, id: \.self) { element in + Text(element) + .padding() + .background(Color.gray) + .cornerRadius(6) + } + } + .frame(width: 300) // limiting the width for demo purpose. This line is not needed in real code + } + +} +``` + +The result of the code above: + +![WrappingHStack for macOS](./Docs/Resources/wrapping-hstack-macos.png) + + +## Customization + +Customize appearance using the next parameters. All the default SwiftUI modifiers can be applied as well. + +### `WrappingHStack` parameters + +Parameter name | Description +---------------|-------------- +`alignment` | horizontal and vertical alignment. `.center` is used by default. Vertical alignment is aplied to every row +`horizontalSpacing` | horizontal spacing between elements +`verticalSpacing` | vertical spacing between the lines + + diff --git a/Sources/WrappingStack/WrappingHStack.swift b/Sources/WrappingStack/WrappingHStack.swift index 6c5416b..f365478 100644 --- a/Sources/WrappingStack/WrappingHStack.swift +++ b/Sources/WrappingStack/WrappingHStack.swift @@ -32,13 +32,21 @@ public struct WrappingHStack, alignment: Alignment = .center, horizontalSpacing: CGFloat = 0, verticalSpacing: CGFloat = 0, @ViewBuilder content create: () -> ForEach - ){ + ) { let forEach = create() data = forEach.data content = forEach.content @@ -111,8 +119,24 @@ public struct WrappingHStack ForEach) { - self.init(id: \.id, content: create) + /// Creates a new WrappingHStack + /// + /// - Parameters: + /// - alignment: horizontal and vertical alignment. Vertical alignment is aplied to every row + /// - horizontalSpacing: horizontal spacing between elements + /// - verticalSpacing: vertical spacing between the lines + /// - create: a method that creates an array of elements + public init( + alignment: Alignment = .center, + horizontalSpacing: CGFloat = 0, + verticalSpacing: CGFloat = 0, + @ViewBuilder content create: () -> ForEach + ) { + self.init(id: \.id, + alignment: alignment, + horizontalSpacing: horizontalSpacing, + verticalSpacing: verticalSpacing, + content: create) } } @@ -121,15 +145,21 @@ extension WrappingHStack where ID == Data.Element.ID, Data.Element: Identifiable @available(iOS 14, macOS 11, *) struct WrappingHStack_Previews: PreviewProvider { static var previews: some View { - WrappingHStack(id: \.self, alignment: .topLeading) { - ForEach(["Hello1", "world1", "Hello2", "world2", "Hello3", "world3", "Hello4", "world4 ", "Hello1"], id: \.self) { item in - Text(item) + WrappingHStack( + id: \.self, + horizontalSpacing: 8, + verticalSpacing: 8 + ) { + ForEach(["Cat 🐱", "Dog 🐶", "Sun 🌞", "Moon 🌕", "Tree 🌳"], id: \.self) { element in + Text(element) .padding() - .background(Color(.systemGray)) - .cornerRadius(3) + .background(Color.gray.opacity(0.1)) + .cornerRadius(6) } } + .padding() .frame(width: 300) + .background(Color.white) } } From 506217e4309adb4b5491afe95b19addaab3b5e8f Mon Sep 17 00:00:00 2001 From: Denis Chaschin Date: Tue, 25 May 2021 21:23:57 +1000 Subject: [PATCH 2/4] typo fixed --- Readme.md | 2 +- Sources/WrappingStack/WrappingHStack.swift | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Readme.md b/Readme.md index 7a31ab4..dadd88a 100644 --- a/Readme.md +++ b/Readme.md @@ -55,7 +55,7 @@ Customize appearance using the next parameters. All the default SwiftUI modifier Parameter name | Description ---------------|-------------- -`alignment` | horizontal and vertical alignment. `.center` is used by default. Vertical alignment is aplied to every row +`alignment` | horizontal and vertical alignment. `.center` is used by default. Vertical alignment is applied to every row `horizontalSpacing` | horizontal spacing between elements `verticalSpacing` | vertical spacing between the lines diff --git a/Sources/WrappingStack/WrappingHStack.swift b/Sources/WrappingStack/WrappingHStack.swift index f365478..a3690a5 100644 --- a/Sources/WrappingStack/WrappingHStack.swift +++ b/Sources/WrappingStack/WrappingHStack.swift @@ -36,7 +36,7 @@ public struct WrappingHStack Date: Tue, 25 May 2021 21:33:40 +1000 Subject: [PATCH 3/4] Performance considerations part added --- Readme.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Readme.md b/Readme.md index dadd88a..c8d65cf 100644 --- a/Readme.md +++ b/Readme.md @@ -59,4 +59,9 @@ Parameter name | Description `horizontalSpacing` | horizontal spacing between elements `verticalSpacing` | vertical spacing between the lines +## Performance considerations +The code written in a way to cache the elements representing views sizes, it doesn't re-calculate the size for different views with the same id. + +* huge numbers of elements are not recommended, although the same applies to `HStack` where `LazyHStack` is a better alternative for the long rows. If you have a large number of elements - double-check the memory and performance on a real device +* it is pretty good in terms of CPU consumption as every element calculates its size only once. From 4917f28b058fe5789f3d0a29563f578003326048 Mon Sep 17 00:00:00 2001 From: Denis Chaschin Date: Tue, 25 May 2021 21:37:41 +1000 Subject: [PATCH 4/4] Displaying iOS and iPadOS versions fixed --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index c8d65cf..102b354 100644 --- a/Readme.md +++ b/Readme.md @@ -1,6 +1,6 @@ # SwiftUI WrappingStack -![Swift 5.3](https://img.shields.io/badge/Swift-5.3-FA5B2C) ![Xcode 12.5](https://img.shields.io/badge/Xcode-12-44B3F6) ![iOS 9.0](https://img.shields.io/badge/iOS-8.0-178DF6) ![iPadOS 9.0](https://img.shields.io/badge/iPadOS-8.0-178DF6) ![MacOS 10.10](https://img.shields.io/badge/MacOS-10.10-178DF6) [![Build & Test](https://github.com/diniska/swiftui-wrapping-stack/actions/workflows/test.yml/badge.svg)](https://github.com/diniska/swiftui-wrapping-stack/actions/workflows/test.yml) +![Swift 5.3](https://img.shields.io/badge/Swift-5.3-FA5B2C) ![Xcode 12.5](https://img.shields.io/badge/Xcode-12.5-44B3F6) ![iOS 9.0](https://img.shields.io/badge/iOS-9.0-178DF6) ![iPadOS 9.0](https://img.shields.io/badge/iPadOS-9.0-178DF6) ![MacOS 10.10](https://img.shields.io/badge/MacOS-10.10-178DF6) [![Build & Test](https://github.com/diniska/swiftui-wrapping-stack/actions/workflows/test.yml/badge.svg)](https://github.com/diniska/swiftui-wrapping-stack/actions/workflows/test.yml) A SwiftUI Views for wrapping HStack elements into multiple lines.