From 9f5d7387d7889defd2bfc4eca988cfd173aadede Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Wed, 1 Mar 2023 19:05:52 +0300 Subject: [PATCH 01/25] feat: skeletons api --- CHANGELOG.md | 4 + TIAppleMapUtils/TIAppleMapUtils.podspec | 2 +- TIAuth/TIAuth.podspec | 2 +- TIDeveloperUtils/TIDeveloperUtils.podspec | 2 +- TIEcommerce/TIEcommerce.podspec | 2 +- TIFoundationUtils/TIFoundationUtils.podspec | 2 +- TIGoogleMapUtils/TIGoogleMapUtils.podspec | 2 +- TIKeychainUtils/TIKeychainUtils.podspec | 2 +- TILogging/TILogging.podspec | 2 +- TIMapUtils/TIMapUtils.podspec | 2 +- TIMoyaNetworking/TIMoyaNetworking.podspec | 2 +- TINetworking/TINetworking.podspec | 2 +- TINetworkingCache/TINetworkingCache.podspec | 2 +- TIPagination/TIPagination.podspec | 2 +- TISwiftUICore/TISwiftUICore.podspec | 2 +- TISwiftUtils/TISwiftUtils.podspec | 2 +- TITableKitUtils/TITableKitUtils.podspec | 2 +- .../BaseSkeletonsAnimationConfiguration.swift | 35 ++++ ...ionalSkeletonsAnimationConfiguration.swift | 37 ++++ .../Animation/SkeletonsAnimationBuilder.swift | 45 +++++ .../SkeletonsAnimationDirection.swift | 92 ++++++++++ .../BaseViewSkeletonsConfiguration.swift | 52 ++++++ .../LabelSkeletonsConfiguration.swift | 163 ++++++++++++++++++ .../SkeletonsConfiguration.swift | 94 ++++++++++ .../Skeletons/Helpers/CALayer+Skeletons.swift | 29 ++++ .../Skeletons/Helpers/UIView+Skeletons.swift | 84 +++++++++ .../Skeletons/Protocols/Skeletonable.swift | 27 +++ .../SkeletonsConfigurationDelegate.swift | 25 +++ .../Protocols/SkeletonsPresenter.swift | 154 +++++++++++++++++ .../Views/Skeletons/SkeletonLayer.swift | 159 +++++++++++++++++ TIUIElements/TIUIElements.podspec | 2 +- TIUIKitCore/TIUIKitCore.podspec | 2 +- TIWebView/TIWebView.podspec | 2 +- TIYandexMapUtils/TIYandexMapUtils.podspec | 2 +- setup | 5 +- 35 files changed, 1024 insertions(+), 21 deletions(-) create mode 100644 TIUIElements/Sources/Views/Skeletons/Animation/BaseSkeletonsAnimationConfiguration.swift create mode 100644 TIUIElements/Sources/Views/Skeletons/Animation/DirectionalSkeletonsAnimationConfiguration.swift create mode 100644 TIUIElements/Sources/Views/Skeletons/Animation/SkeletonsAnimationBuilder.swift create mode 100644 TIUIElements/Sources/Views/Skeletons/Animation/SkeletonsAnimationDirection.swift create mode 100644 TIUIElements/Sources/Views/Skeletons/Configuration/BaseViewSkeletonsConfiguration.swift create mode 100644 TIUIElements/Sources/Views/Skeletons/Configuration/LabelSkeletonsConfiguration.swift create mode 100644 TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift create mode 100644 TIUIElements/Sources/Views/Skeletons/Helpers/CALayer+Skeletons.swift create mode 100644 TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift create mode 100644 TIUIElements/Sources/Views/Skeletons/Protocols/Skeletonable.swift create mode 100644 TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsConfigurationDelegate.swift create mode 100644 TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift create mode 100644 TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift diff --git a/CHANGELOG.md b/CHANGELOG.md index 939213b8..5c3fc4d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +### 1.36.0 + +- **Added**: API for converting view hierarchy to skeletons + ### 1.35.1 - **Added**: Auto documentation generation for `TIFoundationUtils` playground and compile checks for playground before release diff --git a/TIAppleMapUtils/TIAppleMapUtils.podspec b/TIAppleMapUtils/TIAppleMapUtils.podspec index 339d3b27..dc80fcdc 100644 --- a/TIAppleMapUtils/TIAppleMapUtils.podspec +++ b/TIAppleMapUtils/TIAppleMapUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIAppleMapUtils' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Set of helpers for map objects clustering and interacting using Apple MapKit.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIAuth/TIAuth.podspec b/TIAuth/TIAuth.podspec index ae8f0d87..8b7fcfec 100644 --- a/TIAuth/TIAuth.podspec +++ b/TIAuth/TIAuth.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIAuth' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Login, registration, confirmation and other related actions' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIDeveloperUtils/TIDeveloperUtils.podspec b/TIDeveloperUtils/TIDeveloperUtils.podspec index 11469088..a2580e31 100644 --- a/TIDeveloperUtils/TIDeveloperUtils.podspec +++ b/TIDeveloperUtils/TIDeveloperUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIDeveloperUtils' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Universal web view API' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIEcommerce/TIEcommerce.podspec b/TIEcommerce/TIEcommerce.podspec index 7e1ccab1..a7adf60b 100644 --- a/TIEcommerce/TIEcommerce.podspec +++ b/TIEcommerce/TIEcommerce.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIEcommerce' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Cart, products, promocodes, bonuses and other related actions' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIFoundationUtils/TIFoundationUtils.podspec b/TIFoundationUtils/TIFoundationUtils.podspec index f31f6a4a..3d89b8f3 100644 --- a/TIFoundationUtils/TIFoundationUtils.podspec +++ b/TIFoundationUtils/TIFoundationUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIFoundationUtils' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Set of helpers for Foundation framework classes.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIGoogleMapUtils/TIGoogleMapUtils.podspec b/TIGoogleMapUtils/TIGoogleMapUtils.podspec index f19719fc..31195b66 100644 --- a/TIGoogleMapUtils/TIGoogleMapUtils.podspec +++ b/TIGoogleMapUtils/TIGoogleMapUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIGoogleMapUtils' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Set of helpers for map objects clustering and interacting using Google Maps SDK.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIKeychainUtils/TIKeychainUtils.podspec b/TIKeychainUtils/TIKeychainUtils.podspec index fc391f7e..57162d4a 100644 --- a/TIKeychainUtils/TIKeychainUtils.podspec +++ b/TIKeychainUtils/TIKeychainUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIKeychainUtils' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Set of helpers for Keychain classes.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TILogging/TILogging.podspec b/TILogging/TILogging.podspec index 2d6ade90..d5070666 100644 --- a/TILogging/TILogging.podspec +++ b/TILogging/TILogging.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TILogging' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Logging API' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIMapUtils/TIMapUtils.podspec b/TIMapUtils/TIMapUtils.podspec index cc1a494e..5819982a 100644 --- a/TIMapUtils/TIMapUtils.podspec +++ b/TIMapUtils/TIMapUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIMapUtils' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Set of helpers for map objects clustering and interacting.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIMoyaNetworking/TIMoyaNetworking.podspec b/TIMoyaNetworking/TIMoyaNetworking.podspec index 52903c66..46259090 100644 --- a/TIMoyaNetworking/TIMoyaNetworking.podspec +++ b/TIMoyaNetworking/TIMoyaNetworking.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIMoyaNetworking' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Moya + Swagger network service.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TINetworking/TINetworking.podspec b/TINetworking/TINetworking.podspec index 19417603..0e403b87 100644 --- a/TINetworking/TINetworking.podspec +++ b/TINetworking/TINetworking.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TINetworking' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Swagger-frendly networking layer helpers.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TINetworkingCache/TINetworkingCache.podspec b/TINetworkingCache/TINetworkingCache.podspec index 3073835f..3a151388 100644 --- a/TINetworkingCache/TINetworkingCache.podspec +++ b/TINetworkingCache/TINetworkingCache.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TINetworkingCache' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Caching results of EndpointRequests.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIPagination/TIPagination.podspec b/TIPagination/TIPagination.podspec index 7dcbb29e..ffcc30e5 100644 --- a/TIPagination/TIPagination.podspec +++ b/TIPagination/TIPagination.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIPagination' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Generic pagination component.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TISwiftUICore/TISwiftUICore.podspec b/TISwiftUICore/TISwiftUICore.podspec index 267918bc..6a2a4a42 100644 --- a/TISwiftUICore/TISwiftUICore.podspec +++ b/TISwiftUICore/TISwiftUICore.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TISwiftUICore' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Core UI elements: protocols, views and helpers.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TISwiftUtils/TISwiftUtils.podspec b/TISwiftUtils/TISwiftUtils.podspec index 8774d395..f927fd06 100644 --- a/TISwiftUtils/TISwiftUtils.podspec +++ b/TISwiftUtils/TISwiftUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TISwiftUtils' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Bunch of useful helpers for Swift development.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TITableKitUtils/TITableKitUtils.podspec b/TITableKitUtils/TITableKitUtils.podspec index 60df6488..cf268632 100644 --- a/TITableKitUtils/TITableKitUtils.podspec +++ b/TITableKitUtils/TITableKitUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TITableKitUtils' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Set of helpers for TableKit classes.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIUIElements/Sources/Views/Skeletons/Animation/BaseSkeletonsAnimationConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Animation/BaseSkeletonsAnimationConfiguration.swift new file mode 100644 index 00000000..782617dc --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Animation/BaseSkeletonsAnimationConfiguration.swift @@ -0,0 +1,35 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import Foundation +import QuartzCore + +open class BaseSkeletonsAnimationConfiguration { + + public var duration: CFTimeInterval + public var timingFunction: CAMediaTimingFunction? + + public init(duration: CFTimeInterval = 1, timingFunction: CAMediaTimingFunction? = nil) { + self.duration = duration + self.timingFunction = timingFunction + } +} diff --git a/TIUIElements/Sources/Views/Skeletons/Animation/DirectionalSkeletonsAnimationConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Animation/DirectionalSkeletonsAnimationConfiguration.swift new file mode 100644 index 00000000..d07616fd --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Animation/DirectionalSkeletonsAnimationConfiguration.swift @@ -0,0 +1,37 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import QuartzCore + +open class DirectionalSkeletonsAnimationConfiguration: BaseSkeletonsAnimationConfiguration { + + public var direction: SkeletonsAnimationDirection + + public init(direction: SkeletonsAnimationDirection = .leftToRight, + duration: CFTimeInterval = 1, + timingFunction: CAMediaTimingFunction? = nil) { + + self.direction = direction + + super.init(duration: duration, timingFunction: timingFunction) + } +} diff --git a/TIUIElements/Sources/Views/Skeletons/Animation/SkeletonsAnimationBuilder.swift b/TIUIElements/Sources/Views/Skeletons/Animation/SkeletonsAnimationBuilder.swift new file mode 100644 index 00000000..45210858 --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Animation/SkeletonsAnimationBuilder.swift @@ -0,0 +1,45 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import QuartzCore + +open class SkeletonsAnimationBuilder { + + public static func createDirectionalGradientAnimation(_ conf: DirectionalSkeletonsAnimationConfiguration) -> CAAnimationGroup { + + let startPointAnimation = CABasicAnimation(keyPath: #keyPath(CAGradientLayer.startPoint)) + startPointAnimation.fromValue = conf.direction.startPoint.from + startPointAnimation.toValue = conf.direction.startPoint.to + + let endPointAnimation = CABasicAnimation(keyPath: #keyPath(CAGradientLayer.endPoint)) + endPointAnimation.fromValue = conf.direction.endPoint.from + endPointAnimation.toValue = conf.direction.endPoint.to + + let animationGroup = CAAnimationGroup() + animationGroup.timingFunction = conf.timingFunction + animationGroup.duration = conf.duration + animationGroup.animations = [startPointAnimation, endPointAnimation] + animationGroup.repeatCount = .infinity + + return animationGroup + } +} diff --git a/TIUIElements/Sources/Views/Skeletons/Animation/SkeletonsAnimationDirection.swift b/TIUIElements/Sources/Views/Skeletons/Animation/SkeletonsAnimationDirection.swift new file mode 100644 index 00000000..de09b9a1 --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Animation/SkeletonsAnimationDirection.swift @@ -0,0 +1,92 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import struct CoreGraphics.CGPoint + +typealias GradientAnimationAnchorPoints = (from: CGPoint, to: CGPoint) + +public enum SkeletonsAnimationDirection { + case leftToRight + case rightToLeft + case topToBottom + case bottomToTop + case topLeftToBottomRight + case topRightToBottomLeft + case bottomLeftToTopRight + case bottomRightToTopLeft + + var startPoint: GradientAnimationAnchorPoints { + switch self { + case .leftToRight: + return (from: CGPoint(x: -1, y: 0.5), to: CGPoint(x: 1, y: 0.5)) + + case .rightToLeft: + return (from: Self.leftToRight.startPoint.to, to: Self.leftToRight.startPoint.from) + + case .topToBottom: + return (from: CGPoint(x: 0.5, y: -1), to: CGPoint(x: 0.5, y: 1)) + + case .bottomToTop: + return (from: Self.topToBottom.startPoint.to, to: Self.topToBottom.startPoint.from) + + case .topLeftToBottomRight: + return (from: CGPoint(x: -1, y: -1), to: CGPoint(x: 1, y: 1)) + + case .topRightToBottomLeft: + return (from: Self.bottomLeftToTopRight.startPoint.to, to: Self.bottomLeftToTopRight.startPoint.from) + + case .bottomLeftToTopRight: + return (from: CGPoint(x: -1, y: 2), to: CGPoint(x: 1, y: 0)) + + case .bottomRightToTopLeft: + return (from: Self.topLeftToBottomRight.startPoint.to, to: Self.topLeftToBottomRight.startPoint.from) + } + } + + var endPoint: GradientAnimationAnchorPoints { + switch self { + case .leftToRight: + return (from: CGPoint(x: 0, y: 0.5), to: CGPoint(x: 2, y: 0.5)) + + case .rightToLeft: + return (from: Self.leftToRight.endPoint.to, to: Self.leftToRight.endPoint.from) + + case .topToBottom: + return (from: CGPoint(x: 0.5, y: 0), to: CGPoint(x: 0.5, y: 2)) + + case .bottomToTop: + return (from: Self.topToBottom.endPoint.to, to: Self.topToBottom.endPoint.from) + + case .topLeftToBottomRight: + return (from: CGPoint(x: 0, y: 0), to: CGPoint(x: 2, y: 2)) + + case .topRightToBottomLeft: + return (from: Self.bottomLeftToTopRight.endPoint.to, to: Self.bottomLeftToTopRight.endPoint.from) + + case .bottomLeftToTopRight: + return (from: CGPoint(x: 0, y: 1), to: CGPoint(x: 2, y: -1)) + + case .bottomRightToTopLeft: + return (from: Self.topLeftToBottomRight.endPoint.to, to: Self.topLeftToBottomRight.endPoint.from) + } + } +} diff --git a/TIUIElements/Sources/Views/Skeletons/Configuration/BaseViewSkeletonsConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Configuration/BaseViewSkeletonsConfiguration.swift new file mode 100644 index 00000000..935a4069 --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Configuration/BaseViewSkeletonsConfiguration.swift @@ -0,0 +1,52 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import UIKit + +open class BaseViewSkeletonsConfiguration { + + public enum Shape { + case rectangle(cornerRadius: CGFloat) + case circle + case custom(CGPath) + } + + public var shape: Shape + + public init(shape: Shape = .rectangle(cornerRadius: .zero)) { + self.shape = shape + } + + open func drawPath(rect: CGRect) -> CGPath { + switch shape { + case let .custom(path): + return path + + case let .rectangle(cornerRadius: cornerRadius): + let path = UIBezierPath(roundedRect: rect, cornerRadius: cornerRadius) + return path.cgPath + + case .circle: + return CGPath(ellipseIn: rect, transform: nil) + } + } +} diff --git a/TIUIElements/Sources/Views/Skeletons/Configuration/LabelSkeletonsConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Configuration/LabelSkeletonsConfiguration.swift new file mode 100644 index 00000000..602e4086 --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Configuration/LabelSkeletonsConfiguration.swift @@ -0,0 +1,163 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import TISwiftUtils +import UIKit + +open class LabelSkeletonsConfiguration: BaseViewSkeletonsConfiguration { + + public enum LinesAmount { + case constant(Int) + case asLabelSize + case asLabelNumberOfLines + } + + private var isMultiline = false + private var labelNumberOfLines: Int = .zero + private var labelHeight: CGFloat = .zero + private var font: UIFont? + + public var numberOfLines: LinesAmount + public var lineHeight: Closure? + public var lineSpacing: Closure? + + public init(numberOfLines: LinesAmount = .constant(3), + lineHeight: Closure? = nil, + lineSpacing: Closure? = nil, + shape: Shape = .rectangle(cornerRadius: .zero)) { + + self.numberOfLines = numberOfLines + self.lineHeight = lineHeight + self.lineSpacing = lineSpacing + + super.init(shape: shape) + } + + open override func drawPath(rect: CGRect) -> CGPath { + /* + SkeletonLayer + |-------------------------| + ||-----------------------|| - first line CGRect(0, 0, rect.width, lineHeight) + | | - spacing + ||-----------------------|| - second line CGRect(0, lineHeight + spacing, rect.width, lineHeight) + | | - spacing + ||-----------------------|| - third line CGRect(0, (lineHeight + spacing) * 2, rect.width, lineHeight) + |-------------------------| + */ + let path = UIBezierPath() + let numberOfLines = getNumberOfLines() + let spacing = getLineSpacing() + let lineHeight = getLineHeight() + var cornerRadius = CGFloat.zero + + if case let .rectangle(cornerRadius: radius) = shape { + cornerRadius = radius / 2 + } + + for lineNumber in 0.. CGPath { + if case let .custom(path) = shape { + return path + } + + isMultiline = label.isMultiline + font = label.font + labelNumberOfLines = label.numberOfLines + labelHeight = label.bounds.height + + return drawPath(rect: label.bounds) + } + + open func configureTextViewPath(textView: UITextView) -> CGPath { + if case let .custom(path) = shape { + return path + } + + isMultiline = textView.isMultiline + font = textView.font + labelNumberOfLines = textView.textContainer.maximumNumberOfLines + labelHeight = textView.bounds.height + + return drawPath(rect: textView.bounds) + } + + // MARK: - Private methods + + private func getLineHeight() -> CGFloat { + if let lineHeight = lineHeight?(font) { + return lineHeight + } + + // By default height of the line is equal to 75% of font's size + return (font?.pointSize ?? 1) * 0.75 + } + + private func getLineSpacing() -> CGFloat { + if let lineSpacing = lineSpacing?(font) { + return lineSpacing + } + + return font?.xHeight ?? .zero + } + + private func getNumberOfLines() -> Int { + guard isMultiline else { + return 1 + } + + switch self.numberOfLines { + case let .constant(lines): + return lines + + case .asLabelNumberOfLines: + return labelNumberOfLines + + case .asLabelSize: + let lineHeight = getLineHeight() + return Int(labelHeight / lineHeight) + } + } +} diff --git a/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift new file mode 100644 index 00000000..e6ed3979 --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift @@ -0,0 +1,94 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import TISwiftUtils +import UIKit + +open class SkeletonsConfiguration { + + public var viewConfiguration: BaseViewSkeletonsConfiguration + public var labelConfiguration: LabelSkeletonsConfiguration + public var imageViewConfiguration: BaseViewSkeletonsConfiguration + public var animation: ResultClosure? + + public var skeletonsBackgroundColor: CGColor + public var skeletonsMovingColor: CGColor + public var borderWidth: CGFloat + + public weak var configurationDelegate: SkeletonsConfigurationDelegate? + + public var isContainersHidden: Bool { + borderWidth == .zero + } + + // MARK: - Init + + public init(viewConfiguration: BaseViewSkeletonsConfiguration = .init(), + labelConfiguration: LabelSkeletonsConfiguration = .init(), + imageViewConfiguration: BaseViewSkeletonsConfiguration = .init(), + animation: ResultClosure? = nil, + skeletonsBackgroundColor: UIColor = .lightGray.withAlphaComponent(0.7), + skeletonsMovingColor: UIColor = .lightGray.withAlphaComponent(0.2), + borderWidth: CGFloat = .zero, + configurationDelegate: SkeletonsConfigurationDelegate? = nil) { + + self.viewConfiguration = viewConfiguration + self.labelConfiguration = labelConfiguration + self.imageViewConfiguration = imageViewConfiguration + self.animation = animation + self.skeletonsBackgroundColor = skeletonsBackgroundColor.cgColor + self.skeletonsMovingColor = skeletonsMovingColor.cgColor + self.borderWidth = borderWidth + self.configurationDelegate = configurationDelegate + } + + // MARK: - Open methods + + open func createSkeletonLayer(for baseView: UIView?) -> SkeletonLayer { + SkeletonLayer(config: self, baseView: baseView) + } + + open func configureAppearance(layer: SkeletonLayer) { + layer.fillColor = skeletonsBackgroundColor + } + + open func configureContainerAppearance(layer: SkeletonLayer) { + layer.fillColor = UIColor.clear.cgColor + + if !isContainersHidden { + layer.borderColor = skeletonsBackgroundColor + layer.borderWidth = borderWidth + + if case let .rectangle(cornerRadius: radius) = viewConfiguration.shape { + layer.cornerRadius = radius + } + } + } + + open func configureAppearance(gradientLayer: CAGradientLayer) { + gradientLayer.colors = [ + skeletonsBackgroundColor, + skeletonsMovingColor, + skeletonsBackgroundColor, + ] + } +} diff --git a/TIUIElements/Sources/Views/Skeletons/Helpers/CALayer+Skeletons.swift b/TIUIElements/Sources/Views/Skeletons/Helpers/CALayer+Skeletons.swift new file mode 100644 index 00000000..82877f21 --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Helpers/CALayer+Skeletons.swift @@ -0,0 +1,29 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import QuartzCore + +extension CALayer { + public var skeletonLayers: [SkeletonLayer] { + (sublayers ?? []).compactMap { $0 as? SkeletonLayer } + } +} diff --git a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift new file mode 100644 index 00000000..dd6da0eb --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift @@ -0,0 +1,84 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import UIKit + +extension UIView { + public var skeletonableViews: [UIView] { + if let skeletonableView = self as? Skeletonable { + return skeletonableView.viewsToSkeletone + } + + return subviews + } + + var isSkeletonsContainer: Bool { + if let skeletonableView = self as? Skeletonable { + return !skeletonableView.viewsToSkeletone.isEmpty + } + + return !subviews.isEmpty + } + + var viewType: SkeletonLayer.ViewType { + if let labelView = self as? UILabel { + return .label(labelView) + + } else if let textView = self as? UITextView { + return .textView(textView) + + } else if let imageView = self as? UIImageView { + return .imageView(imageView) + + } else if self.isSkeletonsContainer { + return .container(self) + + } else { + return .generic(self) + } + } +} + +extension UITextView { + var isMultiline: Bool { + guard let text = text, let font = font else { + return false + } + + let labelTextSize = (text as NSString).size(withAttributes: [.font: font]) + + return labelTextSize.width > bounds.width + } +} + +extension UILabel { + var isMultiline: Bool { + // Unwrapping font to mute worning while casting UIFont! to Any + guard let text = text, let font = font else { + return false + } + + let labelTextSize = (text as NSString).size(withAttributes: [.font: font]) + + return labelTextSize.width > bounds.width + } +} diff --git a/TIUIElements/Sources/Views/Skeletons/Protocols/Skeletonable.swift b/TIUIElements/Sources/Views/Skeletons/Protocols/Skeletonable.swift new file mode 100644 index 00000000..8b8020b2 --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Protocols/Skeletonable.swift @@ -0,0 +1,27 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import class UIKit.UIView + +public protocol Skeletonable { + var viewsToSkeletone: [UIView] { get } +} diff --git a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsConfigurationDelegate.swift b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsConfigurationDelegate.swift new file mode 100644 index 00000000..7caf34fc --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsConfigurationDelegate.swift @@ -0,0 +1,25 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +public protocol SkeletonsConfigurationDelegate: AnyObject { + func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) +} diff --git a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift new file mode 100644 index 00000000..c3946379 --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift @@ -0,0 +1,154 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import UIKit + +public protocol SkeletonsPresenter { + var baseView: UIView? { get } + var skeletonsConfiguration: SkeletonsConfiguration { get } + var isSkeletonsHidden: Bool { get } + var viewsToSkeletone: [UIView] { get } + + func showSkeletons() + func hideSkeletons() + func startAnimation() + func stopAnimation() +} + +// MARK: - SkeletonsPresenter + Default implemetation + +extension SkeletonsPresenter { + public func showSkeletons() { + guard let baseView = baseView else { + return + } + + baseView.isUserInteractionEnabled = false + + viewsToSkeletone + .flatMap { view in + view.isHidden = true + + return getSkeletonLayer(forView: view) + } + .map { layer in + layer.startAnimation() + + return layer + } + .insert(onto: baseView) + } + + public func hideSkeletons() { + guard let baseView = baseView else { + return + } + + baseView.isUserInteractionEnabled = true + + baseView.layer.sublayers?.forEach { layer in + if let layer = layer as? SkeletonLayer { + layer.remove(from: baseView) + } + } + + baseView.skeletonableViews.forEach { + $0.isHidden = false + } + } + + public func startAnimation() { + baseView?.layer.skeletonLayers.forEach { layer in + layer.startAnimation() + } + } + + public func stopAnimation() { + baseView?.layer.skeletonLayers.forEach { layer in + layer.stopAnimation() + } + } + + // MARK: - Private methods + + private func getSkeletonLayer(forView view: UIView) -> [SkeletonLayer] { + let skeletonLayer = skeletonsConfiguration.createSkeletonLayer(for: baseView) + var subviewSkeletonLayers = [SkeletonLayer]() + + if view.isSkeletonsContainer { + if skeletonsConfiguration.borderWidth != .zero { + skeletonLayer.bind(to: .container(view)) + } + + subviewSkeletonLayers = view.skeletonableViews + .map(getSkeletonLayer(forView:)) + .flatMap { $0 } + + } else { + skeletonLayer.bind(to: view.viewType) + } + + return [skeletonLayer] + subviewSkeletonLayers + } +} + +// MARK: - UIView + SkeletonsPresenter + +extension SkeletonsPresenter where Self: UIView { + public var baseView: UIView? { + self + } + + public var isSkeletonsHidden: Bool { + (layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil + } + + public var viewsToSkeletone: [UIView] { + skeletonableViews + } +} + +// MARK: - UIViewController + SkeletonsPresenter + +extension SkeletonsPresenter where Self: UIViewController { + public var baseView: UIView? { + view + } + + public var isSkeletonsHidden: Bool { + (view.layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil + } + + public var viewsToSkeletone: [UIView] { + baseView?.skeletonableViews ?? view.skeletonableViews + } +} + +// MARK: - Helper extension + +extension Array where Element: CALayer { + public func insert(onto view: UIView, at index: UInt32 = .max) { + self.forEach { subLayer in + view.layer.insertSublayer(subLayer, at: index) + } + } +} diff --git a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift new file mode 100644 index 00000000..30b2b88b --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift @@ -0,0 +1,159 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import UIKit + +open class SkeletonLayer: CAShapeLayer { + + private enum Constants { + static var animationKeyPath: String { + "skeletonAnimation" + } + } + + public enum ViewType { + case generic(UIView) + case container(UIView) + case label(UILabel) + case textView(UITextView) + case imageView(UIImageView) + + public var view: UIView { + switch self { + case let .imageView(imageView): + return imageView + + case let .container(containerView): + return containerView + + case let .label(labelView): + return labelView + + case let .textView(textView): + return textView + + case let .generic(view): + return view + } + } + } + + private var animationLayer = CAGradientLayer() + private var viewBoundsObservation: NSKeyValueObservation? + + public var configuration: SkeletonsConfiguration + public weak var baseView: UIView? + + // MARK: - Init + + // For debug purposes in Lookin or other programs for view hierarchy inspections + public override init(layer: Any) { + self.configuration = .init() + + super.init(layer: layer) + } + + public init(config: SkeletonsConfiguration, baseView: UIView?) { + self.configuration = config + self.baseView = baseView + + super.init() + } + + public required init?(coder: NSCoder) { + self.configuration = .init() + + super.init(coder: coder) + } + + // MARK: - Open methods + + open func bind(to viewType: ViewType) { + configureAppearance(viewType) + updateGeometry(viewType: viewType) + + viewBoundsObservation = viewType.view.observe(\.frame, options: [.new]) { [weak self] view, _ in + view.isHidden = true + self?.updateGeometry(viewType: view.viewType) + } + + configuration.configurationDelegate?.layerDidConfigured(forViewType: viewType, layer: self) + } + + open func remove(from view: UIView) { + removeFromSuperlayer() + } + + open func startAnimation() { + guard let animation = configuration.animation?() else { + return + } + + animationLayer.add(animation, forKey: Constants.animationKeyPath) + mask = animationLayer + } + + open func stopAnimation() { + animationLayer.removeAllAnimations() + mask = nil + } + + // MARK: - Private methods + + private func configureAppearance(_ type: ViewType) { + switch type { + case .container(_): + configuration.configureContainerAppearance(layer: self) + + default: + configuration.configureAppearance(layer: self) + } + + configuration.configureAppearance(gradientLayer: animationLayer) + } + + private func updateGeometry(viewType: ViewType) { + frame = viewType.view.convert(viewType.view.bounds, to: baseView) + path = drawPath(viewType: viewType) + animationLayer.frame = bounds + } + + private func drawPath(viewType: ViewType) -> CGPath { + var path: CGPath + + switch viewType { + case let .textView(textView): + path = configuration.labelConfiguration.configureTextViewPath(textView: textView) + + case let .label(label): + path = configuration.labelConfiguration.configureLabelPath(label: label) + + case .imageView(_): + path = configuration.imageViewConfiguration.drawPath(rect: viewType.view.bounds) + + default: + path = configuration.viewConfiguration.drawPath(rect: viewType.view.bounds) + } + + return path + } +} diff --git a/TIUIElements/TIUIElements.podspec b/TIUIElements/TIUIElements.podspec index 336d94b3..b2e04081 100644 --- a/TIUIElements/TIUIElements.podspec +++ b/TIUIElements/TIUIElements.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIUIElements' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Bunch of useful protocols and views.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIUIKitCore/TIUIKitCore.podspec b/TIUIKitCore/TIUIKitCore.podspec index 4e3768de..e8bededa 100644 --- a/TIUIKitCore/TIUIKitCore.podspec +++ b/TIUIKitCore/TIUIKitCore.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIUIKitCore' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Core UI elements: protocols, views and helpers.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIWebView/TIWebView.podspec b/TIWebView/TIWebView.podspec index a63876cc..c6c2afeb 100644 --- a/TIWebView/TIWebView.podspec +++ b/TIWebView/TIWebView.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIWebView' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Universal web view API' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIYandexMapUtils/TIYandexMapUtils.podspec b/TIYandexMapUtils/TIYandexMapUtils.podspec index ec22d532..b3d899dc 100644 --- a/TIYandexMapUtils/TIYandexMapUtils.podspec +++ b/TIYandexMapUtils/TIYandexMapUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIYandexMapUtils' - s.version = '1.35.1' + s.version = '1.36.0' s.summary = 'Set of helpers for map objects clustering and interacting using Yandex Maps SDK.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/setup b/setup index 97d7cd9d..88c536ef 100755 --- a/setup +++ b/setup @@ -3,5 +3,8 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd "$DIR" +# Set temporary environment variable +export SRCROOT=. + # Configure githooks folder path -git config core.hooksPath .githooks \ No newline at end of file +git config core.hooksPath .githooks From 6e506aa385e82c88941e700ad78b6ac7fb0f51f4 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Wed, 1 Mar 2023 19:16:33 +0300 Subject: [PATCH 02/25] feat: updated exporting of environment variable --- setup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup b/setup index 88c536ef..4bdaeffc 100755 --- a/setup +++ b/setup @@ -4,7 +4,7 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd "$DIR" # Set temporary environment variable -export SRCROOT=. +export SRCROOT=$DIR # Configure githooks folder path git config core.hooksPath .githooks From 7442884856b40da7165e370d1d018050489fd68b Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Wed, 1 Mar 2023 20:39:04 +0300 Subject: [PATCH 03/25] fix: minor changes --- .../DirectionalSkeletonsAnimationConfiguration.swift | 2 +- .../Skeletons/Configuration/SkeletonsConfiguration.swift | 9 ++++----- TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift | 6 ++++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/TIUIElements/Sources/Views/Skeletons/Animation/DirectionalSkeletonsAnimationConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Animation/DirectionalSkeletonsAnimationConfiguration.swift index d07616fd..5ecbc21e 100644 --- a/TIUIElements/Sources/Views/Skeletons/Animation/DirectionalSkeletonsAnimationConfiguration.swift +++ b/TIUIElements/Sources/Views/Skeletons/Animation/DirectionalSkeletonsAnimationConfiguration.swift @@ -27,7 +27,7 @@ open class DirectionalSkeletonsAnimationConfiguration: BaseSkeletonsAnimationCon public var direction: SkeletonsAnimationDirection public init(direction: SkeletonsAnimationDirection = .leftToRight, - duration: CFTimeInterval = 1, + duration: CFTimeInterval = 1.5, timingFunction: CAMediaTimingFunction? = nil) { self.direction = direction diff --git a/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift index e6ed3979..1c37de3f 100644 --- a/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift +++ b/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift @@ -28,7 +28,7 @@ open class SkeletonsConfiguration { public var viewConfiguration: BaseViewSkeletonsConfiguration public var labelConfiguration: LabelSkeletonsConfiguration public var imageViewConfiguration: BaseViewSkeletonsConfiguration - public var animation: ResultClosure? + public var animation: Closure? public var skeletonsBackgroundColor: CGColor public var skeletonsMovingColor: CGColor @@ -36,7 +36,7 @@ open class SkeletonsConfiguration { public weak var configurationDelegate: SkeletonsConfigurationDelegate? - public var isContainersHidden: Bool { + open var isContainersHidden: Bool { borderWidth == .zero } @@ -45,9 +45,8 @@ open class SkeletonsConfiguration { public init(viewConfiguration: BaseViewSkeletonsConfiguration = .init(), labelConfiguration: LabelSkeletonsConfiguration = .init(), imageViewConfiguration: BaseViewSkeletonsConfiguration = .init(), - animation: ResultClosure? = nil, + animation: Closure? = nil, skeletonsBackgroundColor: UIColor = .lightGray.withAlphaComponent(0.7), - skeletonsMovingColor: UIColor = .lightGray.withAlphaComponent(0.2), borderWidth: CGFloat = .zero, configurationDelegate: SkeletonsConfigurationDelegate? = nil) { @@ -56,7 +55,7 @@ open class SkeletonsConfiguration { self.imageViewConfiguration = imageViewConfiguration self.animation = animation self.skeletonsBackgroundColor = skeletonsBackgroundColor.cgColor - self.skeletonsMovingColor = skeletonsMovingColor.cgColor + self.skeletonsMovingColor = skeletonsBackgroundColor.withAlphaComponent(0.2).cgColor self.borderWidth = borderWidth self.configurationDelegate = configurationDelegate } diff --git a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift index 30b2b88b..8c213cbb 100644 --- a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift +++ b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift @@ -100,11 +100,13 @@ open class SkeletonLayer: CAShapeLayer { } open func remove(from view: UIView) { + stopAnimation() removeFromSuperlayer() + viewBoundsObservation = nil } open func startAnimation() { - guard let animation = configuration.animation?() else { + guard let animation = configuration.animation?(self) else { return } @@ -114,7 +116,7 @@ open class SkeletonLayer: CAShapeLayer { open func stopAnimation() { animationLayer.removeAllAnimations() - mask = nil + mask?.removeFromSuperlayer() } // MARK: - Private methods From 59ef1093c789f375915e57267cd6b2669eed2072 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Wed, 1 Mar 2023 20:40:33 +0300 Subject: [PATCH 04/25] fix: change default shape of UIImageViews --- .../Views/Skeletons/Configuration/SkeletonsConfiguration.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift index 1c37de3f..78a12f4a 100644 --- a/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift +++ b/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift @@ -44,7 +44,7 @@ open class SkeletonsConfiguration { public init(viewConfiguration: BaseViewSkeletonsConfiguration = .init(), labelConfiguration: LabelSkeletonsConfiguration = .init(), - imageViewConfiguration: BaseViewSkeletonsConfiguration = .init(), + imageViewConfiguration: BaseViewSkeletonsConfiguration = .init(shape: .circle), animation: Closure? = nil, skeletonsBackgroundColor: UIColor = .lightGray.withAlphaComponent(0.7), borderWidth: CGFloat = .zero, From fd2fa45909ab8b7829fa4377bd2a5d53751dd75b Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Fri, 3 Mar 2023 14:01:48 +0300 Subject: [PATCH 05/25] feat: padding configuration for skeleton layer --- .../BaseViewSkeletonsConfiguration.swift | 12 ++++-- .../LabelSkeletonsConfiguration.swift | 7 ++-- .../Skeletons/Helpers/CGRect+Padding.swift | 40 +++++++++++++++++++ .../Views/Skeletons/SkeletonLayer.swift | 14 +++---- 4 files changed, 59 insertions(+), 14 deletions(-) create mode 100644 TIUIElements/Sources/Views/Skeletons/Helpers/CGRect+Padding.swift diff --git a/TIUIElements/Sources/Views/Skeletons/Configuration/BaseViewSkeletonsConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Configuration/BaseViewSkeletonsConfiguration.swift index 935a4069..cc9e0cbd 100644 --- a/TIUIElements/Sources/Views/Skeletons/Configuration/BaseViewSkeletonsConfiguration.swift +++ b/TIUIElements/Sources/Views/Skeletons/Configuration/BaseViewSkeletonsConfiguration.swift @@ -30,10 +30,12 @@ open class BaseViewSkeletonsConfiguration { case custom(CGPath) } + public var padding: UIEdgeInsets public var shape: Shape - public init(shape: Shape = .rectangle(cornerRadius: .zero)) { + public init(padding: UIEdgeInsets = .zero, shape: Shape = .rectangle(cornerRadius: .zero)) { self.shape = shape + self.padding = padding } open func drawPath(rect: CGRect) -> CGPath { @@ -42,11 +44,15 @@ open class BaseViewSkeletonsConfiguration { return path case let .rectangle(cornerRadius: cornerRadius): - let path = UIBezierPath(roundedRect: rect, cornerRadius: cornerRadius) + let path = UIBezierPath(roundedRect: rect.reduceSize(byPadding: padding), cornerRadius: cornerRadius) return path.cgPath case .circle: - return CGPath(ellipseIn: rect, transform: nil) + return CGPath(ellipseIn: rect.reduceSize(byPadding: padding), transform: nil) } } + + open func applyPadding(viewFrame: CGRect) -> CGRect { + viewFrame.with(padding: padding) + } } diff --git a/TIUIElements/Sources/Views/Skeletons/Configuration/LabelSkeletonsConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Configuration/LabelSkeletonsConfiguration.swift index 602e4086..f4acf4b1 100644 --- a/TIUIElements/Sources/Views/Skeletons/Configuration/LabelSkeletonsConfiguration.swift +++ b/TIUIElements/Sources/Views/Skeletons/Configuration/LabelSkeletonsConfiguration.swift @@ -43,13 +43,14 @@ open class LabelSkeletonsConfiguration: BaseViewSkeletonsConfiguration { public init(numberOfLines: LinesAmount = .constant(3), lineHeight: Closure? = nil, lineSpacing: Closure? = nil, + padding: UIEdgeInsets = .zero, shape: Shape = .rectangle(cornerRadius: .zero)) { self.numberOfLines = numberOfLines self.lineHeight = lineHeight self.lineSpacing = lineSpacing - super.init(shape: shape) + super.init(padding: padding, shape: shape) } open override func drawPath(rect: CGRect) -> CGPath { @@ -108,7 +109,7 @@ open class LabelSkeletonsConfiguration: BaseViewSkeletonsConfiguration { labelNumberOfLines = label.numberOfLines labelHeight = label.bounds.height - return drawPath(rect: label.bounds) + return drawPath(rect: label.bounds.reduceSize(byPadding: padding)) } open func configureTextViewPath(textView: UITextView) -> CGPath { @@ -121,7 +122,7 @@ open class LabelSkeletonsConfiguration: BaseViewSkeletonsConfiguration { labelNumberOfLines = textView.textContainer.maximumNumberOfLines labelHeight = textView.bounds.height - return drawPath(rect: textView.bounds) + return drawPath(rect: textView.bounds.reduceSize(byPadding: padding)) } // MARK: - Private methods diff --git a/TIUIElements/Sources/Views/Skeletons/Helpers/CGRect+Padding.swift b/TIUIElements/Sources/Views/Skeletons/Helpers/CGRect+Padding.swift new file mode 100644 index 00000000..5472f5d5 --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Helpers/CGRect+Padding.swift @@ -0,0 +1,40 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import UIKit + +extension CGRect { + func with(padding: UIEdgeInsets) -> CGRect { + CGRect(x: minX + padding.left, + y: minY + padding.top, + width: width - padding.right, + height: height - padding.bottom) + } + + func reduceSize(byPadding p: UIEdgeInsets) -> CGRect { + let reducedWidth = width - p.left - p.right + let reducedHeight = height - p.top - p.bottom + let reducedSize = CGSize(width: reducedWidth, height: reducedHeight) + + return CGRect(origin: origin, size: reducedSize) + } +} diff --git a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift index 8c213cbb..d96b9a74 100644 --- a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift +++ b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift @@ -134,28 +134,26 @@ open class SkeletonLayer: CAShapeLayer { } private func updateGeometry(viewType: ViewType) { - frame = viewType.view.convert(viewType.view.bounds, to: baseView) - path = drawPath(viewType: viewType) - animationLayer.frame = bounds - } - - private func drawPath(viewType: ViewType) -> CGPath { - var path: CGPath + let rect = viewType.view.convert(viewType.view.bounds, to: baseView) switch viewType { case let .textView(textView): path = configuration.labelConfiguration.configureTextViewPath(textView: textView) + frame = configuration.labelConfiguration.applyPadding(viewFrame: rect) case let .label(label): path = configuration.labelConfiguration.configureLabelPath(label: label) + frame = configuration.labelConfiguration.applyPadding(viewFrame: rect) case .imageView(_): path = configuration.imageViewConfiguration.drawPath(rect: viewType.view.bounds) + frame = configuration.imageViewConfiguration.applyPadding(viewFrame: rect) default: path = configuration.viewConfiguration.drawPath(rect: viewType.view.bounds) + frame = configuration.viewConfiguration.applyPadding(viewFrame: rect) } - return path + animationLayer.frame = bounds } } From fbab4a491b360032b736348930cb9df526362c70 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Fri, 3 Mar 2023 14:35:46 +0300 Subject: [PATCH 06/25] fix: code review notes --- .../SkeletonsConfiguration.swift | 4 +-- ...swift => TextSkeletonsConfiguration.swift} | 30 ++++++++----------- .../Skeletons/Helpers/UIView+Skeletons.swift | 8 ++--- 3 files changed, 19 insertions(+), 23 deletions(-) rename TIUIElements/Sources/Views/Skeletons/Configuration/{LabelSkeletonsConfiguration.swift => TextSkeletonsConfiguration.swift} (90%) diff --git a/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift index 78a12f4a..42cd0227 100644 --- a/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift +++ b/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift @@ -26,7 +26,7 @@ import UIKit open class SkeletonsConfiguration { public var viewConfiguration: BaseViewSkeletonsConfiguration - public var labelConfiguration: LabelSkeletonsConfiguration + public var labelConfiguration: TextSkeletonsConfiguration public var imageViewConfiguration: BaseViewSkeletonsConfiguration public var animation: Closure? @@ -43,7 +43,7 @@ open class SkeletonsConfiguration { // MARK: - Init public init(viewConfiguration: BaseViewSkeletonsConfiguration = .init(), - labelConfiguration: LabelSkeletonsConfiguration = .init(), + labelConfiguration: TextSkeletonsConfiguration = .init(), imageViewConfiguration: BaseViewSkeletonsConfiguration = .init(shape: .circle), animation: Closure? = nil, skeletonsBackgroundColor: UIColor = .lightGray.withAlphaComponent(0.7), diff --git a/TIUIElements/Sources/Views/Skeletons/Configuration/LabelSkeletonsConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Configuration/TextSkeletonsConfiguration.swift similarity index 90% rename from TIUIElements/Sources/Views/Skeletons/Configuration/LabelSkeletonsConfiguration.swift rename to TIUIElements/Sources/Views/Skeletons/Configuration/TextSkeletonsConfiguration.swift index f4acf4b1..b860329d 100644 --- a/TIUIElements/Sources/Views/Skeletons/Configuration/LabelSkeletonsConfiguration.swift +++ b/TIUIElements/Sources/Views/Skeletons/Configuration/TextSkeletonsConfiguration.swift @@ -23,12 +23,12 @@ import TISwiftUtils import UIKit -open class LabelSkeletonsConfiguration: BaseViewSkeletonsConfiguration { +open class TextSkeletonsConfiguration: BaseViewSkeletonsConfiguration { - public enum LinesAmount { - case constant(Int) - case asLabelSize - case asLabelNumberOfLines + private enum Constants { + static var defaultNumberOfLines: Int { + 3 + } } private var isMultiline = false @@ -36,11 +36,11 @@ open class LabelSkeletonsConfiguration: BaseViewSkeletonsConfiguration { private var labelHeight: CGFloat = .zero private var font: UIFont? - public var numberOfLines: LinesAmount + public var numberOfLines: Int? public var lineHeight: Closure? public var lineSpacing: Closure? - public init(numberOfLines: LinesAmount = .constant(3), + public init(numberOfLines: Int? = nil, lineHeight: Closure? = nil, lineSpacing: Closure? = nil, padding: UIEdgeInsets = .zero, @@ -149,16 +149,12 @@ open class LabelSkeletonsConfiguration: BaseViewSkeletonsConfiguration { return 1 } - switch self.numberOfLines { - case let .constant(lines): - return lines - - case .asLabelNumberOfLines: - return labelNumberOfLines - - case .asLabelSize: - let lineHeight = getLineHeight() - return Int(labelHeight / lineHeight) + if let numberOfLines = numberOfLines { + return numberOfLines } + + return labelNumberOfLines == .zero + ? Constants.defaultNumberOfLines + : labelNumberOfLines } } diff --git a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift index dd6da0eb..aae9f042 100644 --- a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift @@ -36,7 +36,7 @@ extension UIView { return !skeletonableView.viewsToSkeletone.isEmpty } - return !subviews.isEmpty + return !subviews.isEmpty } var viewType: SkeletonLayer.ViewType { @@ -60,7 +60,7 @@ extension UIView { extension UITextView { var isMultiline: Bool { - guard let text = text, let font = font else { + guard let text = attributedText?.string ?? text, let font = font else { return false } @@ -72,8 +72,8 @@ extension UITextView { extension UILabel { var isMultiline: Bool { - // Unwrapping font to mute worning while casting UIFont! to Any - guard let text = text, let font = font else { + // Unwrapping font to mute warning while casting UIFont! to Any + guard let text = attributedText?.string ?? text, let font = font else { return false } From 118bca1c9d9bc64580638b9397431d69b8967de9 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Fri, 3 Mar 2023 14:39:32 +0300 Subject: [PATCH 07/25] feat: added default implementation of to protocol --- .../Views/Skeletons/Protocols/SkeletonsPresenter.swift | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift index c3946379..f47b0d7c 100644 --- a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift +++ b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift @@ -37,6 +37,11 @@ public protocol SkeletonsPresenter { // MARK: - SkeletonsPresenter + Default implemetation extension SkeletonsPresenter { + + public var skeletonsConfiguration: SkeletonsConfiguration { + SkeletonsConfiguration() + } + public func showSkeletons() { guard let baseView = baseView else { return From 6e30957fe56f8a129b295e2c7785c71ee62edc31 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Sun, 5 Mar 2023 17:41:11 +0300 Subject: [PATCH 08/25] docs: skeletons api playground page --- .../project.pbxproj | 32 +++++++++---------- .../Skeletons.xcplaygroundpage/Contents.swift | 2 ++ 2 files changed, 18 insertions(+), 16 deletions(-) create mode 100644 TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift diff --git a/TIFoundationUtils/TIFoundationUtils.app/Contents/MacOS/TIFoundationUtils.xcodeproj/project.pbxproj b/TIFoundationUtils/TIFoundationUtils.app/Contents/MacOS/TIFoundationUtils.xcodeproj/project.pbxproj index be06727a..0066094a 100644 --- a/TIFoundationUtils/TIFoundationUtils.app/Contents/MacOS/TIFoundationUtils.xcodeproj/project.pbxproj +++ b/TIFoundationUtils/TIFoundationUtils.app/Contents/MacOS/TIFoundationUtils.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ - A02229F337222E1B9E665195 /* Pods_TIFoundationUtils.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CC8351C190B190691F8FC76 /* Pods_TIFoundationUtils.framework */; }; + 73BF13722D27CF583ED6F602 /* Pods_TIFoundationUtils.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B65A0E379E293C9B91E07959 /* Pods_TIFoundationUtils.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 0CC8351C190B190691F8FC76 /* Pods_TIFoundationUtils.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TIFoundationUtils.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 59A923BF05D59C9BEC19C6FD /* Pods-TIFoundationUtils.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TIFoundationUtils.release.xcconfig"; path = "Target Support Files/Pods-TIFoundationUtils/Pods-TIFoundationUtils.release.xcconfig"; sourceTree = ""; }; + 8397DB7385B1FDD086EB1CC8 /* Pods-TIFoundationUtils.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TIFoundationUtils.debug.xcconfig"; path = "Target Support Files/Pods-TIFoundationUtils/Pods-TIFoundationUtils.debug.xcconfig"; sourceTree = ""; }; 8BACBE8322576CAD00266845 /* TIFoundationUtils.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TIFoundationUtils.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 8BACBE8622576CAD00266845 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - EC0CA80D0000D9F6C5FACF34 /* Pods-TIFoundationUtils.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TIFoundationUtils.debug.xcconfig"; path = "Target Support Files/Pods-TIFoundationUtils/Pods-TIFoundationUtils.debug.xcconfig"; sourceTree = ""; }; + AB76F89DCACA8BC6ED2C503F /* Pods-TIFoundationUtils.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TIFoundationUtils.release.xcconfig"; path = "Target Support Files/Pods-TIFoundationUtils/Pods-TIFoundationUtils.release.xcconfig"; sourceTree = ""; }; + B65A0E379E293C9B91E07959 /* Pods_TIFoundationUtils.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TIFoundationUtils.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -23,17 +23,17 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A02229F337222E1B9E665195 /* Pods_TIFoundationUtils.framework in Frameworks */, + 73BF13722D27CF583ED6F602 /* Pods_TIFoundationUtils.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 37058452818BA6D3D6C19AA7 /* Frameworks */ = { + 0DD8C4C514495CA0AA461559 /* Frameworks */ = { isa = PBXGroup; children = ( - 0CC8351C190B190691F8FC76 /* Pods_TIFoundationUtils.framework */, + B65A0E379E293C9B91E07959 /* Pods_TIFoundationUtils.framework */, ); name = Frameworks; sourceTree = ""; @@ -43,8 +43,8 @@ children = ( 8BACBE8422576CAD00266845 /* TIFoundationUtils */, 8B39A26C21D40F8700DE2643 /* Products */, - AAAF022BA9D15672298175E6 /* Pods */, - 37058452818BA6D3D6C19AA7 /* Frameworks */, + F07ECA749B4E4818C3909D76 /* Pods */, + 0DD8C4C514495CA0AA461559 /* Frameworks */, ); sourceTree = ""; }; @@ -64,11 +64,11 @@ path = TIFoundationUtils; sourceTree = ""; }; - AAAF022BA9D15672298175E6 /* Pods */ = { + F07ECA749B4E4818C3909D76 /* Pods */ = { isa = PBXGroup; children = ( - EC0CA80D0000D9F6C5FACF34 /* Pods-TIFoundationUtils.debug.xcconfig */, - 59A923BF05D59C9BEC19C6FD /* Pods-TIFoundationUtils.release.xcconfig */, + 8397DB7385B1FDD086EB1CC8 /* Pods-TIFoundationUtils.debug.xcconfig */, + AB76F89DCACA8BC6ED2C503F /* Pods-TIFoundationUtils.release.xcconfig */, ); name = Pods; path = Pods; @@ -91,7 +91,7 @@ isa = PBXNativeTarget; buildConfigurationList = 8BACBE8A22576CAD00266845 /* Build configuration list for PBXNativeTarget "TIFoundationUtils" */; buildPhases = ( - F4F8AAE8BFCE7066005B0EF5 /* [CP] Check Pods Manifest.lock */, + 0359411960917C3EEAB0DB38 /* [CP] Check Pods Manifest.lock */, 8BACBE7E22576CAD00266845 /* Headers */, 8BACBE7F22576CAD00266845 /* Sources */, 8BACBE8022576CAD00266845 /* Frameworks */, @@ -150,7 +150,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - F4F8AAE8BFCE7066005B0EF5 /* [CP] Check Pods Manifest.lock */ = { + 0359411960917C3EEAB0DB38 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,7 +308,7 @@ }; 8BACBE8822576CAD00266845 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EC0CA80D0000D9F6C5FACF34 /* Pods-TIFoundationUtils.debug.xcconfig */; + baseConfigurationReference = 8397DB7385B1FDD086EB1CC8 /* Pods-TIFoundationUtils.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; @@ -339,7 +339,7 @@ }; 8BACBE8922576CAD00266845 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 59A923BF05D59C9BEC19C6FD /* Pods-TIFoundationUtils.release.xcconfig */; + baseConfigurationReference = AB76F89DCACA8BC6ED2C503F /* Pods-TIFoundationUtils.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift new file mode 100644 index 00000000..967302f9 --- /dev/null +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift @@ -0,0 +1,2 @@ +import Foundation +import TIUIElements From e199cd422007686fbe2028690a9ed0474a2e4b10 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Sun, 5 Mar 2023 17:42:45 +0300 Subject: [PATCH 09/25] docs: skeletons playground page --- README.md | 4 +- TIUIElements/PlaygroundPodfile | 10 + .../Skeletons/Helpers/UIView+Skeletons.swift | 2 +- .../Views/StatefulButton/StatefulButton.swift | 1 - .../TIUIElements.app/Contents/Info.plist | 28 ++ .../Contents/MacOS/.gitignore | 26 ++ .../TIUIElements.app/Contents/MacOS/Podfile | 10 + .../Skeletons.xcplaygroundpage/Contents.swift | 172 +++++++- .../contents.xcplayground | 2 + .../TIUIElements.xcodeproj/project.pbxproj | 395 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcschemes/TIUIElements.xcscheme | 76 ++++ .../contents.xcworkspacedata | 11 + .../Contents/MacOS/TIUIElements/Info.plist | 24 ++ .../TIUIElements.app/Contents/MacOS/launcher | 6 + .../Contents/Resources/AppIcon.icns | Bin 0 -> 37251 bytes .../Contents/Resources/Assets.car | Bin 0 -> 627568 bytes .../TIUIElements.app/nef/log/TIUIElements.log | 329 +++++++++++++++ .../nef/log/tiuielements-skeletons.log | 4 + TIUIElements/TIUIElements.playground | 1 + docs/tiuielements/skeletons.md | 187 +++++++++ project-scripts/gen_docs_from_playgrounds.sh | 7 +- 22 files changed, 1294 insertions(+), 8 deletions(-) create mode 100644 TIUIElements/PlaygroundPodfile create mode 100644 TIUIElements/TIUIElements.app/Contents/Info.plist create mode 100644 TIUIElements/TIUIElements.app/Contents/MacOS/.gitignore create mode 100644 TIUIElements/TIUIElements.app/Contents/MacOS/Podfile create mode 100644 TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/contents.xcplayground create mode 100644 TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcodeproj/project.pbxproj create mode 100644 TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcodeproj/xcshareddata/xcschemes/TIUIElements.xcscheme create mode 100644 TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcworkspace/contents.xcworkspacedata create mode 100644 TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements/Info.plist create mode 100755 TIUIElements/TIUIElements.app/Contents/MacOS/launcher create mode 100644 TIUIElements/TIUIElements.app/Contents/Resources/AppIcon.icns create mode 100644 TIUIElements/TIUIElements.app/Contents/Resources/Assets.car create mode 100644 TIUIElements/TIUIElements.app/nef/log/TIUIElements.log create mode 100644 TIUIElements/TIUIElements.app/nef/log/tiuielements-skeletons.log create mode 120000 TIUIElements/TIUIElements.playground create mode 100644 docs/tiuielements/skeletons.md diff --git a/README.md b/README.md index e78ba9ca..6d3552a7 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ This repository contains the following frameworks: ```sh cd TIModuleName -nef plaground --name TIModuleName --cocoapods --custom-podfile PlaygroundPodfile +nef playground --name TIModuleName --cocoapods --custom-podfile PlaygroundPodfile ``` See example of `PlaygroundPodfile` in `TIFoundationUtils` @@ -72,7 +72,7 @@ ${SRCROOT}/TIModuleName/TIModuleName.app" ```ruby sources = 'your_sources_expression' - if File.basename(Dir.getwd) == s.name # installing using :path => + if ENV["DEVELOPMENT_INSTALL"] # installing using :path => s.source_files = sources s.exclude_files = s.name + '.app' else diff --git a/TIUIElements/PlaygroundPodfile b/TIUIElements/PlaygroundPodfile new file mode 100644 index 00000000..95938d81 --- /dev/null +++ b/TIUIElements/PlaygroundPodfile @@ -0,0 +1,10 @@ +ENV["DEVELOPMENT_INSTALL"] = "true" + +target 'TIUIElements' do + platform :ios, 11.0 + use_frameworks! + + pod 'TIUIElements', :path => '../../../../TIUIElements/TIUIElements.podspec' + pod 'TIUIKitCore', :path => '../../../../TIUIKitCore/TIUIKitCore.podspec' + pod 'TISwiftUtils', :path => '../../../../TISwiftUtils/TISwiftUtils.podspec' +end diff --git a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift index aae9f042..5eb42a77 100644 --- a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift @@ -25,7 +25,7 @@ import UIKit extension UIView { public var skeletonableViews: [UIView] { if let skeletonableView = self as? Skeletonable { - return skeletonableView.viewsToSkeletone + return skeletonableView.viewsToSkeletone } return subviews diff --git a/TIUIElements/Sources/Views/StatefulButton/StatefulButton.swift b/TIUIElements/Sources/Views/StatefulButton/StatefulButton.swift index 2946332c..307d7df7 100644 --- a/TIUIElements/Sources/Views/StatefulButton/StatefulButton.swift +++ b/TIUIElements/Sources/Views/StatefulButton/StatefulButton.swift @@ -217,7 +217,6 @@ open class StatefulButton: UIButton { } else { updateAppearance(to: .disabled) } - } private func updateAppearance(to state: State) { diff --git a/TIUIElements/TIUIElements.app/Contents/Info.plist b/TIUIElements/TIUIElements.app/Contents/Info.plist new file mode 100644 index 00000000..831ea97a --- /dev/null +++ b/TIUIElements/TIUIElements.app/Contents/Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + launcher + CFBundleIconFile + AppIcon + CFBundleIconName + AppIcon + CFBundleIdentifier + com.fortysevendeg.nef + CFBundleInfoDictionaryVersion + 6.0 + CFBundleSupportedPlatforms + + MacOSX + + LSApplicationCategoryType + public.app-category.developer-tools + LSMinimumSystemVersion + 10.14 + NSHumanReadableCopyright + Copyright © 2019 The nef Authors. All rights reserved. + + diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/.gitignore b/TIUIElements/TIUIElements.app/Contents/MacOS/.gitignore new file mode 100644 index 00000000..18bd1f3b --- /dev/null +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/.gitignore @@ -0,0 +1,26 @@ +## gitignore nef files +**/build/ +**/nef/ +LICENSE + +## User data +**/xcuserdata/ +podfile.lock +**.DS_Store + +## Obj-C/Swift specific +*.hmap +*.ipa +*.dSYM.zip +*.dSYM + +## CocoaPods +**Pods** + +## Carthage +**Carthage** + +## SPM +.build +.swiftpm +swiftpm diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/Podfile b/TIUIElements/TIUIElements.app/Contents/MacOS/Podfile new file mode 100644 index 00000000..ab33d1bc --- /dev/null +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/Podfile @@ -0,0 +1,10 @@ +ENV["DEVELOPMENT_INSTALL"] = "true" + +target 'TIUIElements' do + platform :ios, 11.0 + use_frameworks! + + pod 'TIUIElements', :path => '../../../../TIUIElements/TIUIElements.podspec' + pod 'TISwiftUtils', :path => '../../../../TISwiftUtils/TISwiftUtils.podspec' + pod 'TIUIKitCore', :path => '../../../../TIUIKitCore/TIUIKitCore.podspec' +end diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift index 967302f9..80a02294 100644 --- a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift @@ -1,2 +1,172 @@ -import Foundation +/*: + # Skeletons API + + При импорте _TIUIElements_ вы можете использовать API для показа скелетонов. + + ## Базовая настройка + + Чтобы `UIViewController` или `UIView` мог показать скелетоны необходимо, чтобы он соответствовал протоколу `SkeletonsPresenter`. +*/ import TIUIElements +import UIKit + +class DummyVC: UIViewController, SkeletonsPresenter { +} + +//: Чтобы показать или скрыть скелетоны необходимо использовать методы `showSkeletons()` и `hideSkeletons()` +class CanShowAndHideSkeletons: UIViewController, SkeletonsPresenter { + lazy var button: UIButton = { + let button = UIButton(frame: CGRect(x: .zero, y: .zero, + width: view.frame.width, height: view.frame.height)) + + button.setTitle("Hello from SkeletonableViewController", for: .normal) + button.setTitleColor(.black, for: .normal) + button.titleLabel?.font = .systemFont(ofSize: 30) + button.addTarget(self, action: #selector(toggleSkeletons), for: .touchUpInside) + return button + }() + + override func viewDidLoad() { + super.viewDidLoad() + + view.backgroundColor = .red + view.frame = CGRect(x: 0, y: 0, width: 250, height: 250) + view.addSubview(button) + } + + @objc func toggleSkeletons() { + showSkeletons() + + DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) { [weak self] in + self?.hideSkeletons() + } + } +} + +//: Можно так же указать, какие вью будут конвертироваться в скелетоны +class CustomSkeletonableTableView: UITableView, SkeletonsPresenter { + var viewsToSkeletone: [UIView] { + visibleCells + } +} +/*: + ## Конфигурация внешнего вида + + Для конфигурации скелетонов существует клас `SkeletonsConfiguration` который определяется внутри объекта реализующего протокол `SkeletonsPresenter`. +*/ +class CustomConfigurableSkeletonableView: UIView, SkeletonsPresenter { + var skeletonsConfiguration: SkeletonsConfiguration { + .init(skeletonsBackgroundColor: .blue) + } +} + +/*: + Возможные опции для настройки: + + - анимация + - цвет + - форма + - отступы + + ### Анимация + + `SkeletonsConfiguration` для настройки анимации принимает тип `(SkeletonsLayer) -> CAAnimationGroup`. Это означает, что при необходимости вы можете создать любую необходимую анимацию. Анимация будет применена к каждому скелетону. + + Однако для удобства существует уже определенный класс `SkeletonsAnimationBuilder` со статическим методом `createDirectionalGradientAnimation(_:)` для создания анимаций в одну из сторон: + + ```swift + public enum SkeletonsAnimationDirection { + case leftToRight + case rightToLeft + case topToBottom + case bottomToTop + case topLeftToBottomRight + case topRightToBottomLeft + case bottomLeftToTopRight + case bottomRightToTopLeft + } + ``` +*/ +let confWithLeftToRightAnim = SkeletonsConfiguration(animation: { _ in + let animConfig = DirectionalSkeletonsAnimationConfiguration(direction: .leftToRight, duration: 1.5) + return SkeletonsAnimationBuilder.createDirectionalGradientAnimation(animConfig) +}) + +let confWithTopToBottomAnim = SkeletonsConfiguration(animation: { _ in + let animConfig = DirectionalSkeletonsAnimationConfiguration(direction: .topToBottom, duration: 1.5) + return SkeletonsAnimationBuilder.createDirectionalGradientAnimation(animConfig) +}) + +/*: + ### Цвет + + За настройку цвета отвечает параметр `skeletonsBackgroundColor`: основной цвет скелетонов, им будт заливаться фон и выделяться _border_ +*/ +let confWithRedBackgroundColor = SkeletonsConfiguration(skeletonsBackgroundColor: .red) + +/*: + ### Форма + + Форму можно настраивать отдельно для `UILabel`, `UITextView`, `UIImageView` и остальных вью. Например, картинки можно сделать круглыми, а лейблы прямоугольные с закругленными краями: +*/ +var confWithShape: SkeletonsConfiguration { + let labelConf = TextSkeletonsConfiguration(shape: .rectangle(cornerRadius: 10)) + let imageConf = BaseViewSkeletonsConfiguration(shape: .circle) + + return .init(labelConfiguration: labelConf, + imageViewConfiguration: imageConf) +} + +/*: + Для `UILabel` и `UITextView` есть возможность настроить высоту каждой строчки, расстояние между ними и их количество. +*/ + +var confWithLabelSettings: SkeletonsConfiguration { + let labelConf = TextSkeletonsConfiguration(numberOfLines: 3, + lineHeight: { font in + if let font = font { + return font.pointSize + } + return 10 + + }, lineSpacing: { font in + if let font = font { + return font.xHeight + } + return 5 + }) + return .init(labelConfiguration: labelConf) +} + +/*: + ### Отступы + + Отступы можно настроить отдельно для `UILabel`, `UITextView`, `UIImageView` и остальных вью. Например, для предыдущего примера можно добавить горизонтальный _padding_ для лейбла: +*/ +var confWithPadding: SkeletonsConfiguration { + let labelConf = TextSkeletonsConfiguration(padding: .horizontal(left: 15), shape: .rectangle(cornerRadius: 10)) + let imageConf = BaseViewSkeletonsConfiguration(shape: .circle) + + return .init(labelConfiguration: labelConf, + imageViewConfiguration: imageConf) +} + +/*: + ## Что если нужно больше? + + Если стандартной настройки не хватает, то в конфигуратор можно передать объект, соответствующий протоколу `SkeletonsConfigurationDelegate` через который можно настроить слой скелетона для каждой вью отдельно + + ```swift + public protocol SkeletonsConfigurationDelegate: AnyObject { + func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) + } + ``` +*/ +class SkeletonsConfDelegate: SkeletonsConfigurationDelegate { + func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) { + // Do something... + } +} + +let delegate = SkeletonsConfDelegate() +let confWithDelegate = SkeletonsConfiguration(configurationDelegate: delegate) diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/contents.xcplayground b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/contents.xcplayground new file mode 100644 index 00000000..00daa653 --- /dev/null +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/contents.xcplayground @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcodeproj/project.pbxproj b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcodeproj/project.pbxproj new file mode 100644 index 00000000..52cfb0fd --- /dev/null +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcodeproj/project.pbxproj @@ -0,0 +1,395 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + B295B0E33533FFC3D833A6CB /* Pods_TIUIElements.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E0E28C6F64363C77CAE4662 /* Pods_TIUIElements.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2E10916FC4CAF67D840FC3D2 /* Pods-TIUIElements.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Target Support Files/Pods-TIUIElements/Pods-TIUIElements.release.xcconfig"; sourceTree = ""; }; + 8BACBE8322576CAD00266845 /* TIUIElements.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TIUIElements.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8BACBE8622576CAD00266845 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8E0E28C6F64363C77CAE4662 /* Pods_TIUIElements.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TIUIElements.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CB08C5B0C7051DCB015D3D9F /* Pods-TIUIElements.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TIUIElements.debug.xcconfig"; path = "Target Support Files/Pods-TIUIElements/Pods-TIUIElements.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8BACBE8022576CAD00266845 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B295B0E33533FFC3D833A6CB /* Pods_TIUIElements.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 6FA8D567F06C39C360B32325 /* Pods */ = { + isa = PBXGroup; + children = ( + 2E10916FC4CAF67D840FC3D2 /* Pods-TIUIElements.release.xcconfig */, + CB08C5B0C7051DCB015D3D9F /* Pods-TIUIElements.debug.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + 7672C2F734E0BBEC76B58962 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8E0E28C6F64363C77CAE4662 /* Pods_TIUIElements.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 8B39A26221D40F8700DE2643 = { + isa = PBXGroup; + children = ( + 8BACBE8422576CAD00266845 /* TIUIElements */, + 8B39A26C21D40F8700DE2643 /* Products */, + 6FA8D567F06C39C360B32325 /* Pods */, + 7672C2F734E0BBEC76B58962 /* Frameworks */, + ); + sourceTree = ""; + }; + 8B39A26C21D40F8700DE2643 /* Products */ = { + isa = PBXGroup; + children = ( + 8BACBE8322576CAD00266845 /* TIUIElements.framework */, + ); + name = Products; + sourceTree = ""; + }; + 8BACBE8422576CAD00266845 /* TIUIElements */ = { + isa = PBXGroup; + children = ( + 8BACBE8622576CAD00266845 /* Info.plist */, + ); + path = TIUIElements; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 8BACBE7E22576CAD00266845 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 8BACBE8222576CAD00266845 /* TIUIElements */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8BACBE8A22576CAD00266845 /* Build configuration list for PBXNativeTarget "TIUIElements" */; + buildPhases = ( + 9D2C80D787CBCD9B1EA728B0 /* [CP] Check Pods Manifest.lock */, + 8BACBE7E22576CAD00266845 /* Headers */, + 8BACBE7F22576CAD00266845 /* Sources */, + 8BACBE8022576CAD00266845 /* Frameworks */, + 8BACBE8122576CAD00266845 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TIUIElements; + productName = TIUIElements2; + productReference = 8BACBE8322576CAD00266845 /* TIUIElements.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 8B39A26321D40F8700DE2643 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1010; + LastUpgradeCheck = 1200; + ORGANIZATIONNAME = "47 Degrees"; + TargetAttributes = { + 8BACBE8222576CAD00266845 = { + CreatedOnToolsVersion = 10.1; + }; + }; + }; + buildConfigurationList = 8B39A26621D40F8700DE2643 /* Build configuration list for PBXProject "TIUIElements" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 8B39A26221D40F8700DE2643; + productRefGroup = 8B39A26C21D40F8700DE2643 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8BACBE8222576CAD00266845 /* TIUIElements */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8BACBE8122576CAD00266845 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9D2C80D787CBCD9B1EA728B0 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-TIUIElements-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8BACBE7F22576CAD00266845 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 8B39A27721D40F8800DE2643 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_TESTING_SEARCH_PATHS = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 8B39A27821D40F8800DE2643 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTING_SEARCH_PATHS = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 8BACBE8822576CAD00266845 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CB08C5B0C7051DCB015D3D9F /* Pods-TIUIElements.debug.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + CURRENT_TIUIElements_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "$(SRCROOT)/TIUIElements/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.47deg.ios.TIUIElements; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 8BACBE8922576CAD00266845 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2E10916FC4CAF67D840FC3D2 /* Pods-TIUIElements.release.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + CURRENT_TIUIElements_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "$(SRCROOT)/TIUIElements/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.47deg.ios.TIUIElements; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 8B39A26621D40F8700DE2643 /* Build configuration list for PBXProject "TIUIElements" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8B39A27721D40F8800DE2643 /* Debug */, + 8B39A27821D40F8800DE2643 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8BACBE8A22576CAD00266845 /* Build configuration list for PBXNativeTarget "TIUIElements" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8BACBE8822576CAD00266845 /* Debug */, + 8BACBE8922576CAD00266845 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 8B39A26321D40F8700DE2643 /* Project object */; +} diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..4fdc4a67 --- /dev/null +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcodeproj/xcshareddata/xcschemes/TIUIElements.xcscheme b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcodeproj/xcshareddata/xcschemes/TIUIElements.xcscheme new file mode 100644 index 00000000..2ac02e93 --- /dev/null +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcodeproj/xcshareddata/xcschemes/TIUIElements.xcscheme @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcworkspace/contents.xcworkspacedata b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..313f1fa5 --- /dev/null +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements/Info.plist b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements/Info.plist new file mode 100644 index 00000000..98d14f60 --- /dev/null +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1.0 + NSHumanReadableCopyright + Copyright © 2019. The nef authors. + + diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/launcher b/TIUIElements/TIUIElements.app/Contents/MacOS/launcher new file mode 100755 index 00000000..dedc792f --- /dev/null +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/launcher @@ -0,0 +1,6 @@ +#!/bin/bash + +workspace="TIUIElements.xcworkspace" +workspacePath=$(echo "$0" | rev | cut -f2- -d '/' | rev) + +open "`pwd`/$workspacePath/$workspace" diff --git a/TIUIElements/TIUIElements.app/Contents/Resources/AppIcon.icns b/TIUIElements/TIUIElements.app/Contents/Resources/AppIcon.icns new file mode 100644 index 0000000000000000000000000000000000000000..32814f1ca17fa4db0700645dcc6235c2112faaf6 GIT binary patch literal 37251 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 literal 0 HcmV?d00001 diff --git a/TIUIElements/TIUIElements.app/Contents/Resources/Assets.car b/TIUIElements/TIUIElements.app/Contents/Resources/Assets.car new file mode 100644 index 0000000000000000000000000000000000000000..79d9ea89bf566962afa18f3554de50ad28a82f71 GIT binary patch literal 627568 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

yaud=Tdqkm#7g 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%0AuEF_i9+mYRAhCQX=U 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

aYRq~XGYua!h{<4*4NkZ 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

D@2_>gH0AjyYy$@N(CBa%mY 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%0AA(-JTHOnoYR4Gcgz5O#(_L(?c5TBrps( zIsrlL4|u|F<>jb;BRyR=$owWR+nXnw^P0crS&bHvKQMM+UDOLZLjD! zzjU8hd71{@iw=jOmvK|&&!a}RLb?_s1*jk5Fry?qk4DnH1&CXyh0bv*9a5R2Ooq8L zB6I|Me;JPiZA71&U=6xk#J6F@Gnb6qHs*2P4xF

l7iY%P%i3iH5WzCu!Y0LRSaxJ_Wz?FaB1_+j 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�c*lgO&pPI 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ýl!gY=Ks_F&jj|aWMJ(iDge}fK7eHD787we< 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�yAXDBmDi+xS)QIm`|kDS3G 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 !j=InMI_E?y0=I6NxB{vJ3 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 u(@s1rpn)Peth_VY<2jq) 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 SAHOF+$^<7t6 CAAnimationGroup`. Это означает, что при необходимости вы можете создать любую необходимую анимацию. Анимация будет применена к каждому скелетону. + + Однако для удобства существует уже определенный класс `SkeletonsAnimationBuilder` со статическим методом `createDirectionalGradientAnimation(_:)` для создания анимаций в одну из сторон: + + ```swift + public enum SkeletonsAnimationDirection { + case leftToRight + case rightToLeft + case topToBottom + case bottomToTop + case topLeftToBottomRight + case topRightToBottomLeft + case bottomLeftToTopRight + case bottomRightToTopLeft + } + ``` + +```swift +let confWithLeftToRightAnim = SkeletonsConfiguration(animation: { _ in + let animConfig = DirectionalSkeletonsAnimationConfiguration(direction: .leftToRight, duration: 1.5) + return SkeletonsAnimationBuilder.createDirectionalGradientAnimation(animConfig) +}) + +let confWithTopToBottomAnim = SkeletonsConfiguration(animation: { _ in + let animConfig = DirectionalSkeletonsAnimationConfiguration(direction: .topToBottom, duration: 1.5) + return SkeletonsAnimationBuilder.createDirectionalGradientAnimation(animConfig) +}) +``` + +### Цвет + + За настройку цвета отвечает параметр `skeletonsBackgroundColor`: основной цвет скелетонов, им будт заливаться фон и выделяться _border_ + +```swift +let confWithRedBackgroundColor = SkeletonsConfiguration(skeletonsBackgroundColor: .red) +``` + +### Форма + + Форму можно настраивать отдельно для `UILabel`, `UITextView`, `UIImageView` и остальных вью. Например, картинки можно сделать круглыми, а лейблы прямоугольные с закругленными краями: + +```swift +var confWithShape: SkeletonsConfiguration { + let labelConf = TextSkeletonsConfiguration(shape: .rectangle(cornerRadius: 10)) + let imageConf = BaseViewSkeletonsConfiguration(shape: .circle) + + return .init(labelConfiguration: labelConf, + imageViewConfiguration: imageConf) +} +``` + + Для `UILabel` и `UITextView` есть возможность настроить высоту каждой строчки, расстояние между ними и их количество. + +```swift +var confWithLabelSettings: SkeletonsConfiguration { + let labelConf = TextSkeletonsConfiguration(numberOfLines: 3, + lineHeight: { font in + if let font = font { + return font.pointSize + } + return 10 + + }, lineSpacing: { font in + if let font = font { + return font.xHeight + } + return 5 + }) + return .init(labelConfiguration: labelConf) +} +``` + +### Отступы + + Отступы можно настроить отдельно для `UILabel`, `UITextView`, `UIImageView` и остальных вью. Например, для предыдущего примера можно добавить горизонтальный _padding_ для лейбла: + +```swift +var confWithPadding: SkeletonsConfiguration { + let labelConf = TextSkeletonsConfiguration(padding: .horizontal(left: 15), shape: .rectangle(cornerRadius: 10)) + let imageConf = BaseViewSkeletonsConfiguration(shape: .circle) + + return .init(labelConfiguration: labelConf, + imageViewConfiguration: imageConf) +} +``` + +## Что если нужно больше? + + Если стандартной настройки не хватает, то в конфигуратор можно передать объект, соответствующий протоколу `SkeletonsConfigurationDelegate` через который можно настроить слой скелетона для каждой вью отдельно + + ```swift + public protocol SkeletonsConfigurationDelegate: AnyObject { + func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) + } + ``` + +```swift +class SkeletonsConfDelegate: SkeletonsConfigurationDelegate { + func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) { + // Do something... + } +} + +let delegate = SkeletonsConfDelegate() +let confWithDelegate = SkeletonsConfiguration(configurationDelegate: delegate) +``` diff --git a/project-scripts/gen_docs_from_playgrounds.sh b/project-scripts/gen_docs_from_playgrounds.sh index 9e5c172a..b0489382 100755 --- a/project-scripts/gen_docs_from_playgrounds.sh +++ b/project-scripts/gen_docs_from_playgrounds.sh @@ -7,9 +7,10 @@ # SRCROOT - path to project folder. # -PLAYGROUNDS="${SRCROOT}/TIFoundationUtils/TIFoundationUtils.app" +PLAYGROUNDS="${SRCROOT}/TIFoundationUtils/TIFoundationUtils.app +${SRCROOT}/TIUIElements/TIUIElements.app" for playground_path in ${PLAYGROUNDS}; do - nef compile --project ${playground_path} + # nef compile --project ${playground_path} nef markdown --project ${playground_path} --output ../docs -done \ No newline at end of file +done From bc9ac014634ea4707c098c6cbf79e7432d4fc52a Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Mon, 6 Mar 2023 13:40:12 +0300 Subject: [PATCH 10/25] fix: compilation of the projects --- project-scripts/gen_docs_from_playgrounds.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project-scripts/gen_docs_from_playgrounds.sh b/project-scripts/gen_docs_from_playgrounds.sh index b0489382..ec44cc0f 100755 --- a/project-scripts/gen_docs_from_playgrounds.sh +++ b/project-scripts/gen_docs_from_playgrounds.sh @@ -11,6 +11,6 @@ PLAYGROUNDS="${SRCROOT}/TIFoundationUtils/TIFoundationUtils.app ${SRCROOT}/TIUIElements/TIUIElements.app" for playground_path in ${PLAYGROUNDS}; do - # nef compile --project ${playground_path} + nef compile --project ${playground_path} nef markdown --project ${playground_path} --output ../docs done From 48f6655efced75f61c36c6e3175014c4d6640e7f Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Mon, 6 Mar 2023 14:55:36 +0300 Subject: [PATCH 11/25] fix: logic of font size determination --- .../Skeletons/Helpers/UIView+Skeletons.swift | 47 +++++++++++++++++-- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift index aae9f042..bf5c01ee 100644 --- a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift @@ -22,6 +22,8 @@ import UIKit +// MARK: - UIView + Skeleton helpers + extension UIView { public var skeletonableViews: [UIView] { if let skeletonableView = self as? Skeletonable { @@ -58,27 +60,62 @@ extension UIView { } } +// MARK: - UITextView + is multiline + extension UITextView { var isMultiline: Bool { - guard let text = attributedText?.string ?? text, let font = font else { + let _text: String + let _font: UIFont + + if let attributedText = attributedText, let maxFont = attributedText.getMaxFont() { + _text = attributedText.string + _font = maxFont + + } else if let text = text, let font = self.font { + _text = text + _font = font + + } else { return false } - let labelTextSize = (text as NSString).size(withAttributes: [.font: font]) + let labelTextSize = (_text as NSString).size(withAttributes: [.font: _font]) return labelTextSize.width > bounds.width } } +// MARK: - UILabel + is multiline + extension UILabel { var isMultiline: Bool { - // Unwrapping font to mute warning while casting UIFont! to Any - guard let text = attributedText?.string ?? text, let font = font else { + let _text: String + let _font: UIFont + + if let attributedText = attributedText, let maxFont = attributedText.getMaxFont() { + _text = attributedText.string + _font = maxFont + + } else if let text = text, let font = self.font { + _text = text + _font = font + + } else { return false } - let labelTextSize = (text as NSString).size(withAttributes: [.font: font]) + let labelTextSize = (_text as NSString).size(withAttributes: [.font: _font]) return labelTextSize.width > bounds.width } } + +// MARK: - NSAttributedString helper extension + +extension NSAttributedString { + func getMaxFont() -> UIFont? { + (0.. Date: Mon, 6 Mar 2023 14:57:52 +0300 Subject: [PATCH 12/25] docs: change release version --- CHANGELOG.md | 2 +- TIAppleMapUtils/TIAppleMapUtils.podspec | 2 +- TIAuth/TIAuth.podspec | 2 +- TIDeveloperUtils/TIDeveloperUtils.podspec | 2 +- TIEcommerce/TIEcommerce.podspec | 2 +- TIFoundationUtils/TIFoundationUtils.podspec | 2 +- TIGoogleMapUtils/TIGoogleMapUtils.podspec | 2 +- TIKeychainUtils/TIKeychainUtils.podspec | 2 +- TILogging/TILogging.podspec | 2 +- TIMapUtils/TIMapUtils.podspec | 2 +- TIMoyaNetworking/TIMoyaNetworking.podspec | 2 +- TINetworking/TINetworking.podspec | 2 +- TINetworkingCache/TINetworkingCache.podspec | 2 +- TIPagination/TIPagination.podspec | 2 +- TISwiftUICore/TISwiftUICore.podspec | 2 +- TISwiftUtils/TISwiftUtils.podspec | 2 +- TITableKitUtils/TITableKitUtils.podspec | 2 +- TIUIElements/TIUIElements.podspec | 2 +- TIUIKitCore/TIUIKitCore.podspec | 2 +- TIWebView/TIWebView.podspec | 2 +- TIYandexMapUtils/TIYandexMapUtils.podspec | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c3fc4d0..e792762e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -### 1.36.0 +### 1.37.0 - **Added**: API for converting view hierarchy to skeletons diff --git a/TIAppleMapUtils/TIAppleMapUtils.podspec b/TIAppleMapUtils/TIAppleMapUtils.podspec index dc80fcdc..165c1a89 100644 --- a/TIAppleMapUtils/TIAppleMapUtils.podspec +++ b/TIAppleMapUtils/TIAppleMapUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIAppleMapUtils' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Set of helpers for map objects clustering and interacting using Apple MapKit.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIAuth/TIAuth.podspec b/TIAuth/TIAuth.podspec index 8b7fcfec..01745b46 100644 --- a/TIAuth/TIAuth.podspec +++ b/TIAuth/TIAuth.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIAuth' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Login, registration, confirmation and other related actions' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIDeveloperUtils/TIDeveloperUtils.podspec b/TIDeveloperUtils/TIDeveloperUtils.podspec index a2580e31..0f6f94c0 100644 --- a/TIDeveloperUtils/TIDeveloperUtils.podspec +++ b/TIDeveloperUtils/TIDeveloperUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIDeveloperUtils' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Universal web view API' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIEcommerce/TIEcommerce.podspec b/TIEcommerce/TIEcommerce.podspec index a7adf60b..854e0ad7 100644 --- a/TIEcommerce/TIEcommerce.podspec +++ b/TIEcommerce/TIEcommerce.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIEcommerce' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Cart, products, promocodes, bonuses and other related actions' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIFoundationUtils/TIFoundationUtils.podspec b/TIFoundationUtils/TIFoundationUtils.podspec index 3d89b8f3..e3721de7 100644 --- a/TIFoundationUtils/TIFoundationUtils.podspec +++ b/TIFoundationUtils/TIFoundationUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIFoundationUtils' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Set of helpers for Foundation framework classes.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIGoogleMapUtils/TIGoogleMapUtils.podspec b/TIGoogleMapUtils/TIGoogleMapUtils.podspec index 31195b66..0f5c3c6d 100644 --- a/TIGoogleMapUtils/TIGoogleMapUtils.podspec +++ b/TIGoogleMapUtils/TIGoogleMapUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIGoogleMapUtils' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Set of helpers for map objects clustering and interacting using Google Maps SDK.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIKeychainUtils/TIKeychainUtils.podspec b/TIKeychainUtils/TIKeychainUtils.podspec index 57162d4a..97f19406 100644 --- a/TIKeychainUtils/TIKeychainUtils.podspec +++ b/TIKeychainUtils/TIKeychainUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIKeychainUtils' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Set of helpers for Keychain classes.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TILogging/TILogging.podspec b/TILogging/TILogging.podspec index d5070666..96997027 100644 --- a/TILogging/TILogging.podspec +++ b/TILogging/TILogging.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TILogging' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Logging API' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIMapUtils/TIMapUtils.podspec b/TIMapUtils/TIMapUtils.podspec index 5819982a..40ca905f 100644 --- a/TIMapUtils/TIMapUtils.podspec +++ b/TIMapUtils/TIMapUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIMapUtils' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Set of helpers for map objects clustering and interacting.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIMoyaNetworking/TIMoyaNetworking.podspec b/TIMoyaNetworking/TIMoyaNetworking.podspec index 46259090..239184e5 100644 --- a/TIMoyaNetworking/TIMoyaNetworking.podspec +++ b/TIMoyaNetworking/TIMoyaNetworking.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIMoyaNetworking' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Moya + Swagger network service.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TINetworking/TINetworking.podspec b/TINetworking/TINetworking.podspec index 0e403b87..d1c1ef32 100644 --- a/TINetworking/TINetworking.podspec +++ b/TINetworking/TINetworking.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TINetworking' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Swagger-frendly networking layer helpers.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TINetworkingCache/TINetworkingCache.podspec b/TINetworkingCache/TINetworkingCache.podspec index 3a151388..64831b1f 100644 --- a/TINetworkingCache/TINetworkingCache.podspec +++ b/TINetworkingCache/TINetworkingCache.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TINetworkingCache' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Caching results of EndpointRequests.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIPagination/TIPagination.podspec b/TIPagination/TIPagination.podspec index ffcc30e5..3ee3bb66 100644 --- a/TIPagination/TIPagination.podspec +++ b/TIPagination/TIPagination.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIPagination' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Generic pagination component.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TISwiftUICore/TISwiftUICore.podspec b/TISwiftUICore/TISwiftUICore.podspec index 6a2a4a42..be59b9b8 100644 --- a/TISwiftUICore/TISwiftUICore.podspec +++ b/TISwiftUICore/TISwiftUICore.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TISwiftUICore' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Core UI elements: protocols, views and helpers.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TISwiftUtils/TISwiftUtils.podspec b/TISwiftUtils/TISwiftUtils.podspec index f927fd06..ab75d35d 100644 --- a/TISwiftUtils/TISwiftUtils.podspec +++ b/TISwiftUtils/TISwiftUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TISwiftUtils' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Bunch of useful helpers for Swift development.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TITableKitUtils/TITableKitUtils.podspec b/TITableKitUtils/TITableKitUtils.podspec index cf268632..d0938b2e 100644 --- a/TITableKitUtils/TITableKitUtils.podspec +++ b/TITableKitUtils/TITableKitUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TITableKitUtils' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Set of helpers for TableKit classes.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIUIElements/TIUIElements.podspec b/TIUIElements/TIUIElements.podspec index b2e04081..60c2bc98 100644 --- a/TIUIElements/TIUIElements.podspec +++ b/TIUIElements/TIUIElements.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIUIElements' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Bunch of useful protocols and views.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIUIKitCore/TIUIKitCore.podspec b/TIUIKitCore/TIUIKitCore.podspec index e8bededa..e68a1d70 100644 --- a/TIUIKitCore/TIUIKitCore.podspec +++ b/TIUIKitCore/TIUIKitCore.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIUIKitCore' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Core UI elements: protocols, views and helpers.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIWebView/TIWebView.podspec b/TIWebView/TIWebView.podspec index c6c2afeb..269c97dc 100644 --- a/TIWebView/TIWebView.podspec +++ b/TIWebView/TIWebView.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIWebView' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Universal web view API' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TIYandexMapUtils/TIYandexMapUtils.podspec b/TIYandexMapUtils/TIYandexMapUtils.podspec index b3d899dc..001c878c 100644 --- a/TIYandexMapUtils/TIYandexMapUtils.podspec +++ b/TIYandexMapUtils/TIYandexMapUtils.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'TIYandexMapUtils' - s.version = '1.36.0' + s.version = '1.37.0' s.summary = 'Set of helpers for map objects clustering and interacting using Yandex Maps SDK.' s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } From 29347d77e13e3a2a0a775ba280371172fbcf37b9 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Mon, 6 Mar 2023 19:27:56 +0300 Subject: [PATCH 13/25] fix: code review notes --- .../Skeletons/Helpers/UIView+Skeletons.swift | 64 +++++++++---------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift index bf5c01ee..85803073 100644 --- a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift @@ -20,14 +20,37 @@ // THE SOFTWARE. // +import TIUIKitCore import UIKit +// MARK: - UITextView + is multiline + +extension UITextView { + var isMultiline: Bool { + isMultiline(text: text, + attributedText: attributedText, + font: font, + textAlignment: textAlignment) + } +} + +// MARK: - UILabel + is multiline + +extension UILabel { + var isMultiline: Bool { + isMultiline(text: text, + attributedText: attributedText, + font: font, + textAlignment: textAlignment) + } +} + // MARK: - UIView + Skeleton helpers extension UIView { public var skeletonableViews: [UIView] { if let skeletonableView = self as? Skeletonable { - return skeletonableView.viewsToSkeletone + return skeletonableView.viewsToSkeletone } return subviews @@ -58,12 +81,11 @@ extension UIView { return .generic(self) } } -} -// MARK: - UITextView + is multiline - -extension UITextView { - var isMultiline: Bool { + fileprivate func isMultiline(text: String?, + attributedText: NSAttributedString?, + font: UIFont?, + textAlignment: NSTextAlignment) -> Bool { let _text: String let _font: UIFont @@ -71,7 +93,7 @@ extension UITextView { _text = attributedText.string _font = maxFont - } else if let text = text, let font = self.font { + } else if let text = text, let font = font { _text = text _font = font @@ -79,32 +101,8 @@ extension UITextView { return false } - let labelTextSize = (_text as NSString).size(withAttributes: [.font: _font]) - - return labelTextSize.width > bounds.width - } -} - -// MARK: - UILabel + is multiline - -extension UILabel { - var isMultiline: Bool { - let _text: String - let _font: UIFont - - if let attributedText = attributedText, let maxFont = attributedText.getMaxFont() { - _text = attributedText.string - _font = maxFont - - } else if let text = text, let font = self.font { - _text = text - _font = font - - } else { - return false - } - - let labelTextSize = (_text as NSString).size(withAttributes: [.font: _font]) + let textAttributes = BaseTextAttributes(font: _font, color: .black, alignment: textAlignment, isMultiline: true) + let labelTextSize = textAttributes.size(of: _text, with: .zero) return labelTextSize.width > bounds.width } From 343d36cb8574d624ea339129de95def673e2e5f6 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Tue, 7 Mar 2023 10:11:56 +0300 Subject: [PATCH 14/25] feat: removed SkeletonsPresenter and move all logic to extensions of UIView and UIViewController --- ...swift => UIView+PresentingSkeletons.swift} | 82 ++++++------------- .../Skeletons/UIView+PresetingSkeletons.swift | 8 ++ ...UIViewController+PresentingSkeletons.swift | 53 ++++++++++++ 3 files changed, 87 insertions(+), 56 deletions(-) rename TIUIElements/Sources/Views/Skeletons/{Protocols/SkeletonsPresenter.swift => UIView+PresentingSkeletons.swift} (66%) create mode 100644 TIUIElements/Sources/Views/Skeletons/UIView+PresetingSkeletons.swift create mode 100644 TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift diff --git a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift similarity index 66% rename from TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift rename to TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift index f47b0d7c..e044e72b 100644 --- a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift +++ b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift @@ -22,38 +22,38 @@ import UIKit -public protocol SkeletonsPresenter { - var baseView: UIView? { get } - var skeletonsConfiguration: SkeletonsConfiguration { get } - var isSkeletonsHidden: Bool { get } - var viewsToSkeletone: [UIView] { get } +extension UIView { - func showSkeletons() - func hideSkeletons() - func startAnimation() - func stopAnimation() -} - -// MARK: - SkeletonsPresenter + Default implemetation - -extension SkeletonsPresenter { - - public var skeletonsConfiguration: SkeletonsConfiguration { - SkeletonsConfiguration() + @objc open var baseView: UIView? { + self } - public func showSkeletons() { + @objc open var isSkeletonsHidden: Bool { + (layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil + } + + @objc open var viewsToSkeletone: [UIView] { + skeletonableViews + } + + // MARK: - Public methods + + public func showSkeletons(_ config: SkeletonsConfiguration = .init(), + viewsToSkeletone: [UIView]? = nil) { + guard let baseView = baseView else { return } + let viewsToSkeletone = viewsToSkeletone ?? self.viewsToSkeletone + baseView.isUserInteractionEnabled = false viewsToSkeletone .flatMap { view in view.isHidden = true - return getSkeletonLayer(forView: view) + return getSkeletonLayer(forView: view, withConfiguration: config) } .map { layer in layer.startAnimation() @@ -64,7 +64,7 @@ extension SkeletonsPresenter { } public func hideSkeletons() { - guard let baseView = baseView else { + guard let baseView = baseView ?? nil else { return } @@ -95,17 +95,19 @@ extension SkeletonsPresenter { // MARK: - Private methods - private func getSkeletonLayer(forView view: UIView) -> [SkeletonLayer] { - let skeletonLayer = skeletonsConfiguration.createSkeletonLayer(for: baseView) + private func getSkeletonLayer(forView view: UIView, + withConfiguration conf: SkeletonsConfiguration) -> [SkeletonLayer] { + + let skeletonLayer = conf.createSkeletonLayer(for: baseView) var subviewSkeletonLayers = [SkeletonLayer]() if view.isSkeletonsContainer { - if skeletonsConfiguration.borderWidth != .zero { + if conf.borderWidth != .zero { skeletonLayer.bind(to: .container(view)) } subviewSkeletonLayers = view.skeletonableViews - .map(getSkeletonLayer(forView:)) + .map { getSkeletonLayer(forView: $0, withConfiguration: conf) } .flatMap { $0 } } else { @@ -116,38 +118,6 @@ extension SkeletonsPresenter { } } -// MARK: - UIView + SkeletonsPresenter - -extension SkeletonsPresenter where Self: UIView { - public var baseView: UIView? { - self - } - - public var isSkeletonsHidden: Bool { - (layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil - } - - public var viewsToSkeletone: [UIView] { - skeletonableViews - } -} - -// MARK: - UIViewController + SkeletonsPresenter - -extension SkeletonsPresenter where Self: UIViewController { - public var baseView: UIView? { - view - } - - public var isSkeletonsHidden: Bool { - (view.layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil - } - - public var viewsToSkeletone: [UIView] { - baseView?.skeletonableViews ?? view.skeletonableViews - } -} - // MARK: - Helper extension extension Array where Element: CALayer { diff --git a/TIUIElements/Sources/Views/Skeletons/UIView+PresetingSkeletons.swift b/TIUIElements/Sources/Views/Skeletons/UIView+PresetingSkeletons.swift new file mode 100644 index 00000000..11d2ff8a --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/UIView+PresetingSkeletons.swift @@ -0,0 +1,8 @@ +// +// File.swift +// +// +// Created by Nikita Semenov on 07.03.2023. +// + +import Foundation diff --git a/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift b/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift new file mode 100644 index 00000000..48a9d031 --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift @@ -0,0 +1,53 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import UIKit + +extension UIViewController { + @objc open var baseView: UIView? { + view + } + + @objc open var isSkeletonsHidden: Bool { + (view.layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil + } + + @objc open var viewsToSkeletone: [UIView] { + baseView?.skeletonableViews ?? view.skeletonableViews + } + + public func showSkeletons(_ conf: SkeletonsConfiguration = .init()) { + baseView?.showSkeletons(conf, viewsToSkeletone: viewsToSkeletone) + } + + public func hideSkeletons() { + baseView?.hideSkeletons() + } + + public func startAnimation() { + baseView?.startAnimation() + } + + public func stopAnimation() { + baseView?.stopAnimation() + } +} From 7a0747843a38d99841b0c781aa567bcf407630f0 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Tue, 7 Mar 2023 11:38:09 +0300 Subject: [PATCH 15/25] feat: removed computed @objc properties --- .../Protocols/SkeletonsPresenter.swift | 94 +++++++++++++++++++ .../UIView+PresentingSkeletons.swift | 39 +++----- .../Skeletons/UIView+PresetingSkeletons.swift | 8 -- ...UIViewController+PresentingSkeletons.swift | 31 +++--- 4 files changed, 117 insertions(+), 55 deletions(-) create mode 100644 TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift delete mode 100644 TIUIElements/Sources/Views/Skeletons/UIView+PresetingSkeletons.swift diff --git a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift new file mode 100644 index 00000000..31cf529a --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift @@ -0,0 +1,94 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import UIKit + +public protocol SkeletonsPresenter { + var baseView: UIView? { get } + var skeletonsConfiguration: SkeletonsConfiguration { get } + var isSkeletonsHidden: Bool { get } + var viewsToSkeletone: [UIView] { get } + + func showSkeletons() + func hideSkeletons() + func startAnimation() + func stopAnimation() +} + +// MARK: - SkeletonsPresenter + Default implemetation + +extension SkeletonsPresenter { + + public var skeletonsConfiguration: SkeletonsConfiguration { + SkeletonsConfiguration() + } + + public func showSkeletons() { + baseView?.showSkeletons(on: nil, + viewsToSkeletone: viewsToSkeletone, + skeletonsConfiguration) + } + + public func hideSkeletons() { + baseView?.hideSkeletons(baseView: nil) + } + + public func startAnimation() { + baseView?.startAnimation(baseView: nil) + } + + public func stopAnimation() { + baseView?.stopAnimation(baseView: nil) + } +} + +// MARK: - UIView + SkeletonsPresenter + +extension SkeletonsPresenter where Self: UIView { + public var baseView: UIView? { + self + } + + public var isSkeletonsHidden: Bool { + (layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil + } + + public var viewsToSkeletone: [UIView] { + skeletonableViews + } +} + +// MARK: - UIViewController + SkeletonsPresenter + +extension SkeletonsPresenter where Self: UIViewController { + public var baseView: UIView? { + view + } + + public var isSkeletonsHidden: Bool { + (view.layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil + } + + public var viewsToSkeletone: [UIView] { + baseView?.skeletonableViews ?? view.skeletonableViews + } +} diff --git a/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift index e044e72b..c1838cf0 100644 --- a/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift @@ -24,28 +24,14 @@ import UIKit extension UIView { - @objc open var baseView: UIView? { - self - } - - @objc open var isSkeletonsHidden: Bool { - (layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil - } - - @objc open var viewsToSkeletone: [UIView] { - skeletonableViews - } - // MARK: - Public methods - public func showSkeletons(_ config: SkeletonsConfiguration = .init(), - viewsToSkeletone: [UIView]? = nil) { + public func showSkeletons(on baseView: UIView?, + viewsToSkeletone: [UIView]? = nil, + _ config: SkeletonsConfiguration = .init()) { - guard let baseView = baseView else { - return - } - - let viewsToSkeletone = viewsToSkeletone ?? self.viewsToSkeletone + let baseView = baseView ?? self + let viewsToSkeletone = viewsToSkeletone ?? skeletonableViews baseView.isUserInteractionEnabled = false @@ -53,7 +39,7 @@ extension UIView { .flatMap { view in view.isHidden = true - return getSkeletonLayer(forView: view, withConfiguration: config) + return getSkeletonLayer(forView: view, baseView: baseView, withConfiguration: config) } .map { layer in layer.startAnimation() @@ -63,10 +49,8 @@ extension UIView { .insert(onto: baseView) } - public func hideSkeletons() { - guard let baseView = baseView ?? nil else { - return - } + public func hideSkeletons(baseView: UIView?) { + let baseView = baseView ?? self baseView.isUserInteractionEnabled = true @@ -81,13 +65,13 @@ extension UIView { } } - public func startAnimation() { + public func startAnimation(baseView: UIView?) { baseView?.layer.skeletonLayers.forEach { layer in layer.startAnimation() } } - public func stopAnimation() { + public func stopAnimation(baseView: UIView?) { baseView?.layer.skeletonLayers.forEach { layer in layer.stopAnimation() } @@ -96,6 +80,7 @@ extension UIView { // MARK: - Private methods private func getSkeletonLayer(forView view: UIView, + baseView: UIView, withConfiguration conf: SkeletonsConfiguration) -> [SkeletonLayer] { let skeletonLayer = conf.createSkeletonLayer(for: baseView) @@ -107,7 +92,7 @@ extension UIView { } subviewSkeletonLayers = view.skeletonableViews - .map { getSkeletonLayer(forView: $0, withConfiguration: conf) } + .map { getSkeletonLayer(forView: $0, baseView: baseView, withConfiguration: conf) } .flatMap { $0 } } else { diff --git a/TIUIElements/Sources/Views/Skeletons/UIView+PresetingSkeletons.swift b/TIUIElements/Sources/Views/Skeletons/UIView+PresetingSkeletons.swift deleted file mode 100644 index 11d2ff8a..00000000 --- a/TIUIElements/Sources/Views/Skeletons/UIView+PresetingSkeletons.swift +++ /dev/null @@ -1,8 +0,0 @@ -// -// File.swift -// -// -// Created by Nikita Semenov on 07.03.2023. -// - -import Foundation diff --git a/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift b/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift index 48a9d031..a4eb1ee0 100644 --- a/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift @@ -23,31 +23,22 @@ import UIKit extension UIViewController { - @objc open var baseView: UIView? { - view + public func showSkeletons(on baseView: UIView?, + viewsToSkeletone: [UIView]? = nil, + _ config: SkeletonsConfiguration = .init()) { + + (baseView ?? view).showSkeletons(on: nil, viewsToSkeletone: viewsToSkeletone, config) } - @objc open var isSkeletonsHidden: Bool { - (view.layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil + public func hideSkeletons(baseView: UIView?) { + (baseView ?? view).hideSkeletons(baseView: nil) } - @objc open var viewsToSkeletone: [UIView] { - baseView?.skeletonableViews ?? view.skeletonableViews + public func startAnimation(baseView: UIView?) { + (baseView ?? view).startAnimation(baseView: nil) } - public func showSkeletons(_ conf: SkeletonsConfiguration = .init()) { - baseView?.showSkeletons(conf, viewsToSkeletone: viewsToSkeletone) - } - - public func hideSkeletons() { - baseView?.hideSkeletons() - } - - public func startAnimation() { - baseView?.startAnimation() - } - - public func stopAnimation() { - baseView?.stopAnimation() + public func stopAnimation(baseView: UIView?) { + (baseView ?? view).stopAnimation(baseView: nil) } } From b533eaaae69cb1870bde67770a1291870e98a718 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Tue, 7 Mar 2023 13:00:34 +0300 Subject: [PATCH 16/25] fix: remove useless baseView --- .../Protocols/SkeletonsPresenter.swift | 39 +++++---------- .../UIView+PresentingSkeletons.swift | 47 +++++++++---------- ...UIViewController+PresentingSkeletons.swift | 25 ++++++---- 3 files changed, 48 insertions(+), 63 deletions(-) diff --git a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift index 31cf529a..b808a121 100644 --- a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift +++ b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift @@ -23,7 +23,6 @@ import UIKit public protocol SkeletonsPresenter { - var baseView: UIView? { get } var skeletonsConfiguration: SkeletonsConfiguration { get } var isSkeletonsHidden: Bool { get } var viewsToSkeletone: [UIView] { get } @@ -41,33 +40,11 @@ extension SkeletonsPresenter { public var skeletonsConfiguration: SkeletonsConfiguration { SkeletonsConfiguration() } - - public func showSkeletons() { - baseView?.showSkeletons(on: nil, - viewsToSkeletone: viewsToSkeletone, - skeletonsConfiguration) - } - - public func hideSkeletons() { - baseView?.hideSkeletons(baseView: nil) - } - - public func startAnimation() { - baseView?.startAnimation(baseView: nil) - } - - public func stopAnimation() { - baseView?.stopAnimation(baseView: nil) - } } // MARK: - UIView + SkeletonsPresenter extension SkeletonsPresenter where Self: UIView { - public var baseView: UIView? { - self - } - public var isSkeletonsHidden: Bool { (layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil } @@ -75,20 +52,26 @@ extension SkeletonsPresenter where Self: UIView { public var viewsToSkeletone: [UIView] { skeletonableViews } + + public func showSkeletons() { + showSkeletons(viewsToSkeletone: viewsToSkeletone, + skeletonsConfiguration) + } } // MARK: - UIViewController + SkeletonsPresenter extension SkeletonsPresenter where Self: UIViewController { - public var baseView: UIView? { - view - } - public var isSkeletonsHidden: Bool { (view.layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil } public var viewsToSkeletone: [UIView] { - baseView?.skeletonableViews ?? view.skeletonableViews + view.skeletonableViews + } + + public func showSkeletons() { + showSkeletons(viewsToSkeletone: viewsToSkeletone, + skeletonsConfiguration) } } diff --git a/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift index c1838cf0..9addca50 100644 --- a/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift @@ -26,53 +26,51 @@ extension UIView { // MARK: - Public methods - public func showSkeletons(on baseView: UIView?, - viewsToSkeletone: [UIView]? = nil, - _ config: SkeletonsConfiguration = .init()) { + /// Shows skeletons on the view + /// + /// - Parameters: + /// - viewsToSkeletone: views that will be converted to skeletones. If nil was passed subviews will be converted to skeletons + /// - config: configuration of the skeletons' layers + public func showSkeletons(viewsToSkeletone: [UIView]?, + _ config: SkeletonsConfiguration) { - let baseView = baseView ?? self let viewsToSkeletone = viewsToSkeletone ?? skeletonableViews + isUserInteractionEnabled = false - baseView.isUserInteractionEnabled = false + subviews.forEach { $0.isHidden = true } viewsToSkeletone .flatMap { view in - view.isHidden = true - - return getSkeletonLayer(forView: view, baseView: baseView, withConfiguration: config) + getSkeletonLayer(forView: view, withConfiguration: config) } .map { layer in layer.startAnimation() return layer } - .insert(onto: baseView) + .insert(onto: self) } - public func hideSkeletons(baseView: UIView?) { - let baseView = baseView ?? self + public func hideSkeletons() { + isUserInteractionEnabled = true - baseView.isUserInteractionEnabled = true - - baseView.layer.sublayers?.forEach { layer in + layer.sublayers?.forEach { layer in if let layer = layer as? SkeletonLayer { - layer.remove(from: baseView) + layer.remove(from: self) } } - baseView.skeletonableViews.forEach { - $0.isHidden = false - } + subviews.forEach { $0.isHidden = false} } - public func startAnimation(baseView: UIView?) { - baseView?.layer.skeletonLayers.forEach { layer in + public func startAnimation() { + layer.skeletonLayers.forEach { layer in layer.startAnimation() } } - public func stopAnimation(baseView: UIView?) { - baseView?.layer.skeletonLayers.forEach { layer in + public func stopAnimation() { + layer.skeletonLayers.forEach { layer in layer.stopAnimation() } } @@ -80,10 +78,9 @@ extension UIView { // MARK: - Private methods private func getSkeletonLayer(forView view: UIView, - baseView: UIView, withConfiguration conf: SkeletonsConfiguration) -> [SkeletonLayer] { - let skeletonLayer = conf.createSkeletonLayer(for: baseView) + let skeletonLayer = conf.createSkeletonLayer(for: self) var subviewSkeletonLayers = [SkeletonLayer]() if view.isSkeletonsContainer { @@ -92,7 +89,7 @@ extension UIView { } subviewSkeletonLayers = view.skeletonableViews - .map { getSkeletonLayer(forView: $0, baseView: baseView, withConfiguration: conf) } + .map { getSkeletonLayer(forView: $0, withConfiguration: conf) } .flatMap { $0 } } else { diff --git a/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift b/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift index a4eb1ee0..3af38aa4 100644 --- a/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift @@ -23,22 +23,27 @@ import UIKit extension UIViewController { - public func showSkeletons(on baseView: UIView?, - viewsToSkeletone: [UIView]? = nil, - _ config: SkeletonsConfiguration = .init()) { - (baseView ?? view).showSkeletons(on: nil, viewsToSkeletone: viewsToSkeletone, config) + /// Shows skeletons + /// + /// - Parameters: + /// - viewsToSkeletone: views that will be converted to skeletones. If nil was passed subviews of the view will be converted to skeletons + /// - config: configuration of the skeletons' layers + public func showSkeletons(viewsToSkeletone: [UIView]?, + _ config: SkeletonsConfiguration) { + + view.showSkeletons(viewsToSkeletone: viewsToSkeletone, config) } - public func hideSkeletons(baseView: UIView?) { - (baseView ?? view).hideSkeletons(baseView: nil) + public func hideSkeletons() { + view.hideSkeletons() } - public func startAnimation(baseView: UIView?) { - (baseView ?? view).startAnimation(baseView: nil) + public func startAnimation() { + view.startAnimation() } - public func stopAnimation(baseView: UIView?) { - (baseView ?? view).stopAnimation(baseView: nil) + public func stopAnimation() { + view.stopAnimation() } } From 9c8510af147268751da47b913809608adaa1c388 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Tue, 7 Mar 2023 18:42:03 +0300 Subject: [PATCH 17/25] feat: updated skeletons documentation for new api and code review comment --- .../project.pbxproj | 32 +- .../Views/Skeletons/SkeletonLayer.swift | 1 - TIUIElements/TIUIElements.app/.gitignore | 4 + .../Skeletons.xcplaygroundpage/Contents.swift | 255 ++++++++++---- .../contents.xcplayground | 2 +- .../TIUIElements.app/nef/log/TIUIElements.log | 329 ------------------ .../nef/log/tiuielements-skeletons.log | 4 - .../BaseTextAttributes.swift | 3 + docs/tiuielements/skeletons.md | 245 ++++++++++--- project-scripts/gen_docs_from_playgrounds.sh | 2 +- 10 files changed, 402 insertions(+), 475 deletions(-) create mode 100644 TIUIElements/TIUIElements.app/.gitignore delete mode 100644 TIUIElements/TIUIElements.app/nef/log/TIUIElements.log delete mode 100644 TIUIElements/TIUIElements.app/nef/log/tiuielements-skeletons.log diff --git a/TIFoundationUtils/TIFoundationUtils.app/Contents/MacOS/TIFoundationUtils.xcodeproj/project.pbxproj b/TIFoundationUtils/TIFoundationUtils.app/Contents/MacOS/TIFoundationUtils.xcodeproj/project.pbxproj index 0066094a..be06727a 100644 --- a/TIFoundationUtils/TIFoundationUtils.app/Contents/MacOS/TIFoundationUtils.xcodeproj/project.pbxproj +++ b/TIFoundationUtils/TIFoundationUtils.app/Contents/MacOS/TIFoundationUtils.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ - 73BF13722D27CF583ED6F602 /* Pods_TIFoundationUtils.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B65A0E379E293C9B91E07959 /* Pods_TIFoundationUtils.framework */; }; + A02229F337222E1B9E665195 /* Pods_TIFoundationUtils.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CC8351C190B190691F8FC76 /* Pods_TIFoundationUtils.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 8397DB7385B1FDD086EB1CC8 /* Pods-TIFoundationUtils.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TIFoundationUtils.debug.xcconfig"; path = "Target Support Files/Pods-TIFoundationUtils/Pods-TIFoundationUtils.debug.xcconfig"; sourceTree = ""; }; + 0CC8351C190B190691F8FC76 /* Pods_TIFoundationUtils.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TIFoundationUtils.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 59A923BF05D59C9BEC19C6FD /* Pods-TIFoundationUtils.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TIFoundationUtils.release.xcconfig"; path = "Target Support Files/Pods-TIFoundationUtils/Pods-TIFoundationUtils.release.xcconfig"; sourceTree = ""; }; 8BACBE8322576CAD00266845 /* TIFoundationUtils.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TIFoundationUtils.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 8BACBE8622576CAD00266845 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AB76F89DCACA8BC6ED2C503F /* Pods-TIFoundationUtils.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TIFoundationUtils.release.xcconfig"; path = "Target Support Files/Pods-TIFoundationUtils/Pods-TIFoundationUtils.release.xcconfig"; sourceTree = ""; }; - B65A0E379E293C9B91E07959 /* Pods_TIFoundationUtils.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TIFoundationUtils.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EC0CA80D0000D9F6C5FACF34 /* Pods-TIFoundationUtils.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TIFoundationUtils.debug.xcconfig"; path = "Target Support Files/Pods-TIFoundationUtils/Pods-TIFoundationUtils.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -23,17 +23,17 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 73BF13722D27CF583ED6F602 /* Pods_TIFoundationUtils.framework in Frameworks */, + A02229F337222E1B9E665195 /* Pods_TIFoundationUtils.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0DD8C4C514495CA0AA461559 /* Frameworks */ = { + 37058452818BA6D3D6C19AA7 /* Frameworks */ = { isa = PBXGroup; children = ( - B65A0E379E293C9B91E07959 /* Pods_TIFoundationUtils.framework */, + 0CC8351C190B190691F8FC76 /* Pods_TIFoundationUtils.framework */, ); name = Frameworks; sourceTree = ""; @@ -43,8 +43,8 @@ children = ( 8BACBE8422576CAD00266845 /* TIFoundationUtils */, 8B39A26C21D40F8700DE2643 /* Products */, - F07ECA749B4E4818C3909D76 /* Pods */, - 0DD8C4C514495CA0AA461559 /* Frameworks */, + AAAF022BA9D15672298175E6 /* Pods */, + 37058452818BA6D3D6C19AA7 /* Frameworks */, ); sourceTree = ""; }; @@ -64,11 +64,11 @@ path = TIFoundationUtils; sourceTree = ""; }; - F07ECA749B4E4818C3909D76 /* Pods */ = { + AAAF022BA9D15672298175E6 /* Pods */ = { isa = PBXGroup; children = ( - 8397DB7385B1FDD086EB1CC8 /* Pods-TIFoundationUtils.debug.xcconfig */, - AB76F89DCACA8BC6ED2C503F /* Pods-TIFoundationUtils.release.xcconfig */, + EC0CA80D0000D9F6C5FACF34 /* Pods-TIFoundationUtils.debug.xcconfig */, + 59A923BF05D59C9BEC19C6FD /* Pods-TIFoundationUtils.release.xcconfig */, ); name = Pods; path = Pods; @@ -91,7 +91,7 @@ isa = PBXNativeTarget; buildConfigurationList = 8BACBE8A22576CAD00266845 /* Build configuration list for PBXNativeTarget "TIFoundationUtils" */; buildPhases = ( - 0359411960917C3EEAB0DB38 /* [CP] Check Pods Manifest.lock */, + F4F8AAE8BFCE7066005B0EF5 /* [CP] Check Pods Manifest.lock */, 8BACBE7E22576CAD00266845 /* Headers */, 8BACBE7F22576CAD00266845 /* Sources */, 8BACBE8022576CAD00266845 /* Frameworks */, @@ -150,7 +150,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0359411960917C3EEAB0DB38 /* [CP] Check Pods Manifest.lock */ = { + F4F8AAE8BFCE7066005B0EF5 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,7 +308,7 @@ }; 8BACBE8822576CAD00266845 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8397DB7385B1FDD086EB1CC8 /* Pods-TIFoundationUtils.debug.xcconfig */; + baseConfigurationReference = EC0CA80D0000D9F6C5FACF34 /* Pods-TIFoundationUtils.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; @@ -339,7 +339,7 @@ }; 8BACBE8922576CAD00266845 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AB76F89DCACA8BC6ED2C503F /* Pods-TIFoundationUtils.release.xcconfig */; + baseConfigurationReference = 59A923BF05D59C9BEC19C6FD /* Pods-TIFoundationUtils.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; diff --git a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift index d96b9a74..d8908764 100644 --- a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift +++ b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift @@ -92,7 +92,6 @@ open class SkeletonLayer: CAShapeLayer { updateGeometry(viewType: viewType) viewBoundsObservation = viewType.view.observe(\.frame, options: [.new]) { [weak self] view, _ in - view.isHidden = true self?.updateGeometry(viewType: view.viewType) } diff --git a/TIUIElements/TIUIElements.app/.gitignore b/TIUIElements/TIUIElements.app/.gitignore new file mode 100644 index 00000000..b7fe13ce --- /dev/null +++ b/TIUIElements/TIUIElements.app/.gitignore @@ -0,0 +1,4 @@ +# gitignore nef files +**/build/ +**/nef/ +LICENSE \ No newline at end of file diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift index 80a02294..a32529a3 100644 --- a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift @@ -3,39 +3,91 @@ При импорте _TIUIElements_ вы можете использовать API для показа скелетонов. - ## Базовая настройка + ## Принцип работы - Чтобы `UIViewController` или `UIView` мог показать скелетоны необходимо, чтобы он соответствовал протоколу `SkeletonsPresenter`. -*/ + При использовании методов показа скелетонов: + 1. происходит скрытие всех subview в иерархии той view, на которой был вызван метод + 2. далее происходит проход по view, которые можно сконвертировать в скелетоны (список либо определяется пользователем, либо конвертация будет происходить автоматически), создается `CALayer` типа `SkeletonLayer`, представляющий конвертируемую view + 3. поверх view с которой начался показ, добавляются все созданные `SkeletonLayer` + + > Таким образом скелетоны не модифицируют размеры view и не изменяют ее положение + + ## Как начать пользоваться + + Базовая настройка для показа скелетонов не требуется. `UIView` и `UIViewController` уже имеют все необходимые методы для работы: + - `showSkeletons(viewsToSkeletone:_:)` : используется для показа скелетонов, если была передана конфигурация анимации, то она запустится автоматически. `viewsToSkeletone` - опциональный массив `UIView`, определяющий, какие вью будут конвертироваться в скелетоны. Если nil, то проход будет осуществляться по списку subview + - `hideSkeletons()` : используется для скрытия скелетонов + - `startAnimation()` : используется для старта анимации на скелетонах (если анимания не была сконфигурирована в методе `showSkeletons(viewsToSkeletone:_:)` то ничего не произойдет) + - `stopAnimation()` : используется для остановки анимации на скелетонах + */ +import TIUIKitCore import TIUIElements import UIKit -class DummyVC: UIViewController, SkeletonsPresenter { -} +class CanShowAndHideSkeletons: BaseInitializableViewController { -//: Чтобы показать или скрыть скелетоны необходимо использовать методы `showSkeletons()` и `hideSkeletons()` -class CanShowAndHideSkeletons: UIViewController, SkeletonsPresenter { - lazy var button: UIButton = { - let button = UIButton(frame: CGRect(x: .zero, y: .zero, - width: view.frame.width, height: view.frame.height)) - - button.setTitle("Hello from SkeletonableViewController", for: .normal) - button.setTitleColor(.black, for: .normal) - button.titleLabel?.font = .systemFont(ofSize: 30) - button.addTarget(self, action: #selector(toggleSkeletons), for: .touchUpInside) - return button - }() + private let imageView = UIImageView(image: UIImage(systemName: "apple.logo")) + private let label = UILabel() + private let button = UIButton(type: .custom) - override func viewDidLoad() { - super.viewDidLoad() + override func addViews() { + super.addViews() - view.backgroundColor = .red - view.frame = CGRect(x: 0, y: 0, width: 250, height: 250) - view.addSubview(button) + view.addSubviews(imageView, label, button) } - @objc func toggleSkeletons() { - showSkeletons() + override func configureLayout() { + super.configureLayout() + + [imageView, label, button] + .forEach { $0.translatesAutoresizingMaskIntoConstraints = false } + + NSLayoutConstraint.activate([ + imageView.heightAnchor.constraint(equalToConstant: 40), + imageView.widthAnchor.constraint(equalToConstant: 40), + imageView.centerYAnchor.constraint(equalTo: label.centerYAnchor), + imageView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + + label.topAnchor.constraint(equalTo: view.topAnchor), + label.trailingAnchor.constraint(equalTo: view.trailingAnchor), + label.leadingAnchor.constraint(equalTo: imageView.trailingAnchor), + label.heightAnchor.constraint(equalToConstant: 60), + + button.leadingAnchor.constraint(equalTo: view.leadingAnchor), + button.topAnchor.constraint(equalTo: label.bottomAnchor), + button.trailingAnchor.constraint(equalTo: view.trailingAnchor), + button.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) + } + + override func bindViews() { + super.bindViews() + + button.addTarget(self, action: #selector(toggleSkeletons), for: .touchUpInside) + } + + override func configureAppearance() { + super.configureAppearance() + + label.text = "Hello from SkeletonableViewController" + button.setTitle("show skeletons", for: .normal) + + let textAttributes = BaseTextAttributes(font: .systemFont(ofSize: 25), color: .black, alignment: .natural, isMultiline: false) + + view.configureUIView(appearance: UIView.DefaultAppearance(backgroundColor: .white)) + + label.configureUILabel(appearance: UILabel.DefaultAppearance.make { + $0.textAttributes = textAttributes + }) + + button.configureUIButton(appearance: UILabel.DefaultAppearance.make { + $0.textAttributes = textAttributes + }) + } + + @objc private func toggleSkeletons() { + // Т.к. передается nil, скелетонится будут все subview (в данном случае view.subview == [button]) + showSkeletons(viewsToSkeletone: nil, .init()) DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) { [weak self] in self?.hideSkeletons() @@ -43,17 +95,41 @@ class CanShowAndHideSkeletons: UIViewController, SkeletonsPresenter { } } -//: Можно так же указать, какие вью будут конвертироваться в скелетоны -class CustomSkeletonableTableView: UITableView, SkeletonsPresenter { - var viewsToSkeletone: [UIView] { - visibleCells +/*: + ## Skeletonable + + Если необходимо изменить список конвертируемых в скелетоны view у какой-нибудь из отдельных view в иерархии, можно подписать его под протокол `Skeletonable` + */ +extension UITableViewCell: Skeletonable { + public var viewsToSkeletone: [UIView] { + contentView.subviews } } + +/*: + ## SkeletonsPresenter + + Чтобы не приходилось постоянно передавать в методы необходимые параметры для конфигурации можно соответствовать протоколу `SkeletonsPresenter`. Протокол дает возможность определять свойства для конфигурации скелетонов внутри view или viewController, вызывать метод `showSkeletons()` без передачи каких-либо параметров + + Перепишем _CanShowAndHideSkeletons_ под использование протокола + */ + +class CanShowAndHideWithSkeletonsPresenter: CanShowAndHideSkeletons, SkeletonsPresenter { + var skeletonsConfiguration: SkeletonsConfiguration { + SkeletonsConfiguration(skeletonsBackgroundColor: .gray) + } +} + +let canShowAndHideController = CanShowAndHideWithSkeletonsPresenter() + +//: Skeletons will be shown with custom configuration +canShowAndHideController.showSkeletons() + /*: ## Конфигурация внешнего вида - Для конфигурации скелетонов существует клас `SkeletonsConfiguration` который определяется внутри объекта реализующего протокол `SkeletonsPresenter`. -*/ + Для конфигурации скелетонов существует класс `SkeletonsConfiguration` + */ class CustomConfigurableSkeletonableView: UIView, SkeletonsPresenter { var skeletonsConfiguration: SkeletonsConfiguration { .init(skeletonsBackgroundColor: .blue) @@ -68,6 +144,8 @@ class CustomConfigurableSkeletonableView: UIView, SkeletonsPresenter { - форма - отступы + > При этом все view делятся на: `UIView` с subviews (контейнеры), `UIView` без subviews, `UILabel`, `UITextView` и `UIImageView`. Для контейнеров доступна только настройка `borderWidth`, а `borderColor` используется тот же, что и для других скелетонов + ### Анимация `SkeletonsConfiguration` для настройки анимации принимает тип `(SkeletonsLayer) -> CAAnimationGroup`. Это означает, что при необходимости вы можете создать любую необходимую анимацию. Анимация будет применена к каждому скелетону. @@ -76,39 +154,39 @@ class CustomConfigurableSkeletonableView: UIView, SkeletonsPresenter { ```swift public enum SkeletonsAnimationDirection { - case leftToRight - case rightToLeft - case topToBottom - case bottomToTop - case topLeftToBottomRight - case topRightToBottomLeft - case bottomLeftToTopRight - case bottomRightToTopLeft + case leftToRight + case rightToLeft + case topToBottom + case bottomToTop + case topLeftToBottomRight + case topRightToBottomLeft + case bottomLeftToTopRight + case bottomRightToTopLeft } ``` -*/ + */ let confWithLeftToRightAnim = SkeletonsConfiguration(animation: { _ in - let animConfig = DirectionalSkeletonsAnimationConfiguration(direction: .leftToRight, duration: 1.5) - return SkeletonsAnimationBuilder.createDirectionalGradientAnimation(animConfig) + let animConfig = DirectionalSkeletonsAnimationConfiguration(direction: .leftToRight, duration: 1.5) + return SkeletonsAnimationBuilder.createDirectionalGradientAnimation(animConfig) }) let confWithTopToBottomAnim = SkeletonsConfiguration(animation: { _ in - let animConfig = DirectionalSkeletonsAnimationConfiguration(direction: .topToBottom, duration: 1.5) - return SkeletonsAnimationBuilder.createDirectionalGradientAnimation(animConfig) + let animConfig = DirectionalSkeletonsAnimationConfiguration(direction: .topToBottom, duration: 1.5) + return SkeletonsAnimationBuilder.createDirectionalGradientAnimation(animConfig) }) /*: ### Цвет За настройку цвета отвечает параметр `skeletonsBackgroundColor`: основной цвет скелетонов, им будт заливаться фон и выделяться _border_ -*/ + */ let confWithRedBackgroundColor = SkeletonsConfiguration(skeletonsBackgroundColor: .red) /*: ### Форма Форму можно настраивать отдельно для `UILabel`, `UITextView`, `UIImageView` и остальных вью. Например, картинки можно сделать круглыми, а лейблы прямоугольные с закругленными краями: -*/ + */ var confWithShape: SkeletonsConfiguration { let labelConf = TextSkeletonsConfiguration(shape: .rectangle(cornerRadius: 10)) let imageConf = BaseViewSkeletonsConfiguration(shape: .circle) @@ -117,24 +195,21 @@ var confWithShape: SkeletonsConfiguration { imageViewConfiguration: imageConf) } -/*: - Для `UILabel` и `UITextView` есть возможность настроить высоту каждой строчки, расстояние между ними и их количество. -*/ - +//: Для `UILabel` и `UITextView` есть возможность настроить высоту каждой строчки, расстояние между ними и их количество. var confWithLabelSettings: SkeletonsConfiguration { let labelConf = TextSkeletonsConfiguration(numberOfLines: 3, lineHeight: { font in - if let font = font { - return font.pointSize - } - return 10 + if let font = font { + return font.pointSize + } + return 10 - }, lineSpacing: { font in - if let font = font { - return font.xHeight - } - return 5 - }) + }, lineSpacing: { font in + if let font = font { + return font.xHeight + } + return 5 + }) return .init(labelConfiguration: labelConf) } @@ -142,7 +217,7 @@ var confWithLabelSettings: SkeletonsConfiguration { ### Отступы Отступы можно настроить отдельно для `UILabel`, `UITextView`, `UIImageView` и остальных вью. Например, для предыдущего примера можно добавить горизонтальный _padding_ для лейбла: -*/ + */ var confWithPadding: SkeletonsConfiguration { let labelConf = TextSkeletonsConfiguration(padding: .horizontal(left: 15), shape: .rectangle(cornerRadius: 10)) let imageConf = BaseViewSkeletonsConfiguration(shape: .circle) @@ -158,15 +233,65 @@ var confWithPadding: SkeletonsConfiguration { ```swift public protocol SkeletonsConfigurationDelegate: AnyObject { - func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) + func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) } ``` -*/ + */ class SkeletonsConfDelegate: SkeletonsConfigurationDelegate { - func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) { - // Do something... - } + func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) { + if case .imageView(_) = type { + layer.frame = .init(x: layer.frame.minX - 20, + y: layer.frame.minY - 20, + width: layer.frame.width, + height: layer.frame.height) + } + } } let delegate = SkeletonsConfDelegate() let confWithDelegate = SkeletonsConfiguration(configurationDelegate: delegate) + +/*: + ### Особенности + + Т.к. размеры view на основе которой строятся скелетоны не модифицируются, может возникнуть ситуация, когда одни скелетоны перекрывают другие. Например, когда размер view меньше ее скелетонов. В таких случаях как раз может помочь установка позиции или размеров в методе делегата `SkeletonsConfigurationDelegate` + + Также в качестве способа обойти такую ситуацию можно передавать во view моковые данные для увеличения ее размеров, чтобы размеры били хотя бы примерно похожи на размер скелетонов, как в примере: + */ +extension DefaultTitleSubtitleView: SkeletonsPresenter { + public var skeletonsConfiguration: SkeletonsConfiguration { + .init(labelConfiguration: .init(numberOfLines: 3)) + } +} + +let titleSubtitleView = DefaultTitleSubtitleView() +titleSubtitleView.configure(appearance: .make { + $0.titleAppearance.update { + $0.textAttributes = .init(font: .systemFont(ofSize: 15), color: .black, alignment: .natural, isMultiline: true) + } + $0.subtitleAppearance.update { + $0.textAttributes = .init(font: .systemFont(ofSize: 15), color: .black, alignment: .natural, isMultiline: true) + } +}) +titleSubtitleView.configure(with: .init(title: "very very long mock string to make multiple lines", + subtitle: "very very long mock string to make multiple lines")) + +titleSubtitleView.showSkeletons() + +DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) { + titleSubtitleView.configure(with: .init(title: "normal data from a request", + subtitle: "normal data from a request")) + titleSubtitleView.hideSkeletons() +} + +//: ## Тестовый сконфигурированный контроллер +import PlaygroundSupport + +canShowAndHideController.view.frame = .init(origin: .zero, size: .init(width: 250, height: 100)) + +canShowAndHideController.hideSkeletons() +confWithLeftToRightAnim.labelConfiguration = .init(numberOfLines: 2) + +PlaygroundPage.current.liveView = canShowAndHideController + +canShowAndHideController.showSkeletons(viewsToSkeletone: nil, confWithLeftToRightAnim) diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/contents.xcplayground b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/contents.xcplayground index 00daa653..3debe4b3 100644 --- a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/contents.xcplayground +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/contents.xcplayground @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/TIUIElements/TIUIElements.app/nef/log/TIUIElements.log b/TIUIElements/TIUIElements.app/nef/log/TIUIElements.log deleted file mode 100644 index 8cc04f01..00000000 --- a/TIUIElements/TIUIElements.app/nef/log/TIUIElements.log +++ /dev/null @@ -1,329 +0,0 @@ -Command line invocation: - /Applications/Xcode-14.1.0.app/Contents/Developer/usr/bin/xcodebuild -workspace /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.xcworkspace -sdk iphoneos -scheme TIUIElements -derivedDataPath /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData -configuration Debug - -User defaults from command line: - IDEDerivedDataPathOverride = /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData - IDEPackageSupportUseBuiltinSCM = YES - -Build settings from command line: - SDKROOT = iphoneos16.1 - -Prepare packages - -Computing target dependency graph and provisioning inputs - -Create build description -Build description signature: db7507c327d0c1f4a443baa913d927d9 -Build description path: /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/XCBuildData/db7507c327d0c1f4a443baa913d927d9-desc.xcbuild - -note: Building targets in dependency order -CreateBuildDirectory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS - builtin-create-build-directory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products - -CreateBuildDirectory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS - builtin-create-build-directory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex - -CreateBuildDirectory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/EagerLinkingTBDs - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS - builtin-create-build-directory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/EagerLinkingTBDs - -CreateBuildDirectory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TIUIKitCore - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS - builtin-create-build-directory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TIUIKitCore - -CreateBuildDirectory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TIUIElements - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS - builtin-create-build-directory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TIUIElements - -CreateBuildDirectory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS - builtin-create-build-directory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils - -/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods/Pods.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 9.0, but the range of supported deployment target versions is 11.0 to 16.1.99. (in target 'TISwiftUtils' from project 'Pods') -MkDir /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /bin/mkdir -p /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework - -MkDir /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Headers (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /bin/mkdir -p /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Headers - -WriteAuxiliaryFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - write-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap - -WriteAuxiliaryFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - write-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap - -WriteAuxiliaryFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-target-headers.hmap (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - write-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-target-headers.hmap - -WriteAuxiliaryFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - write-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap - -WriteAuxiliaryFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - write-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml - -WriteAuxiliaryFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils.hmap (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - write-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils.hmap - -WriteAuxiliaryFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - write-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap - -WriteAuxiliaryFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module.modulemap (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - write-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module.modulemap - -WriteAuxiliaryFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - write-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml - -WriteAuxiliaryFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/module.modulemap (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - write-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/module.modulemap - -Copy /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Modules/module.modulemap /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/module.modulemap (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/module.modulemap /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Modules - -CpHeader /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Headers/TISwiftUtils-umbrella.h /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods/Target\ Support\ Files/TISwiftUtils/TISwiftUtils-umbrella.h (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods/Target\ Support\ Files/TISwiftUtils/TISwiftUtils-umbrella.h /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Headers - -ProcessInfoPlistFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Info.plist /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods/Target\ Support\ Files/TISwiftUtils/TISwiftUtils-Info.plist (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-infoPlistUtility /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods/Target\ Support\ Files/TISwiftUtils/TISwiftUtils-Info.plist -producttype com.apple.product-type.framework -expandbuildsettings -format binary -platform iphoneos -requiredArchitecture arm64 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Info.plist - -WriteAuxiliaryFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/TISwiftUtils_vers.c (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - write-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/TISwiftUtils_vers.c - -WriteAuxiliaryFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.SwiftFileList (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - write-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.SwiftFileList - -WriteAuxiliaryFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.LinkFileList (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - write-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.LinkFileList - -WriteAuxiliaryFile /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-OutputFileMap.json (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - write-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-OutputFileMap.json - -SwiftDriver TISwiftUtils normal arm64 com.apple.xcode.tools.swift.compiler (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-SwiftDriver -- /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -module-name TISwiftUtils -Onone -enforce-exclusivity\=checked @/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.SwiftFileList -DDEBUG -D COCOAPODS -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -target arm64-apple-ios9.0 -enable-bare-slash-regex -g -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -enable-testing -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -swift-version 5 -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -c -j8 -enable-batch-mode -incremental -output-file-map /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-OutputFileMap.json -use-frontend-parseable-output -save-temps -no-color-diagnostics -serialize-diagnostics -emit-dependencies -emit-module -emit-module-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.swiftmodule -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -emit-objc-header -emit-objc-header-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-Swift.h -import-underlying-module -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -working-directory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -experimental-emit-module-separately - -SwiftEmitModule normal arm64 Emitting\ module\ for\ TISwiftUtils (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-swiftTaskExecution -- /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -emit-module -experimental-skip-non-inlinable-function-bodies-without-types /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -disable-clang-spi -target-sdk-version 16.1 -emit-module-doc-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.swiftdoc -emit-module-source-info-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.swiftsourceinfo -emit-objc-header-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-Swift.h -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-master-emit-module.dia -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-master-emit-module.d -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.swiftmodule -emit-abi-descriptor-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.abi.json - -SwiftCompile normal arm64 Compiling\ Updatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-swiftTaskExecution -- /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Updatable.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Updatable.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Updatable.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Updatable.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Updatable.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules -CompileSwift normal arm64 /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -c /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Updatable.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Updatable.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Updatable.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Updatable.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Updatable.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules - -SwiftCompile normal arm64 Compiling\ BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-swiftTaskExecution -- /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/BackingStore.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/BackingStore.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/BackingStore.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/BackingStore.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/BackingStore.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules -CompileSwift normal arm64 /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -c /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/BackingStore.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/BackingStore.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/BackingStore.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/BackingStore.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/BackingStore.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules - -SwiftCompile normal arm64 Compiling\ KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-swiftTaskExecution -- /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/KeyPathEquatable.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/KeyPathEquatable.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/KeyPathEquatable.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/KeyPathEquatable.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/KeyPathEquatable.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules -CompileSwift normal arm64 /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -c /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/KeyPathEquatable.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/KeyPathEquatable.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/KeyPathEquatable.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/KeyPathEquatable.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/KeyPathEquatable.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules - -SwiftCompile normal arm64 Compiling\ Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-swiftTaskExecution -- /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Selectable.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Selectable.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Selectable.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Selectable.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Selectable.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules - -CompileSwift normal arm64 /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -c /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Selectable.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Selectable.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Selectable.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Selectable.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Selectable.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules - -SwiftCompile normal arm64 Compiling\ Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-swiftTaskExecution -- /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Typealias.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Typealias.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Typealias.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Typealias.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Typealias.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules - -CompileSwift normal arm64 /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -c /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Typealias.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Typealias.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Typealias.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Typealias.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Typealias.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules - -SwiftCompile normal arm64 Compiling\ Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-swiftTaskExecution -- /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Optional+Extensions.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Optional+Extensions.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Optional+Extensions.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Optional+Extensions.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Optional+Extensions.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules - -CompileSwift normal arm64 /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -c /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Optional+Extensions.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Optional+Extensions.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Optional+Extensions.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Optional+Extensions.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Optional+Extensions.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules - -SwiftCompile normal arm64 Compiling\ Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-swiftTaskExecution -- /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Array+SafeSubscript.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Array+SafeSubscript.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Array+SafeSubscript.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Array+SafeSubscript.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Array+SafeSubscript.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules - -CompileSwift normal arm64 /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -c -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Array+SafeSubscript.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Array+SafeSubscript.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Array+SafeSubscript.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Array+SafeSubscript.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Array+SafeSubscript.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules - -SwiftCompile normal arm64 Compiling\ Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-swiftTaskExecution -- /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Substring+Extensions.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Substring+Extensions.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Substring+Extensions.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Substring+Extensions.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Substring+Extensions.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules - -CompileSwift normal arm64 /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -c /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift -primary-file /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift -emit-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Substring+Extensions.d -emit-reference-dependencies-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Substring+Extensions.swiftdeps -serialize-diagnostics-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Substring+Extensions.dia -target arm64-apple-ios9.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -no-color-diagnostics -enable-testing -g -import-underlying-module -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity\=checked -Onone -D DEBUG -D COCOAPODS -serialize-debugging-options -enable-bare-slash-regex -empty-abi-descriptor -Xcc -working-directory -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -resource-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -module-name TISwiftUtils -frontend-parseable-output -disable-clang-spi -target-sdk-version 16.1 -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Substring+Extensions.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/Substring+Extensions.o -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -index-system-modules - -SwiftDriverJobDiscovery normal arm64 Emitting module for TISwiftUtils (in target 'TISwiftUtils' from project 'Pods') - -SwiftDriver\ Compilation\ Requirements TISwiftUtils normal arm64 com.apple.xcode.tools.swift.compiler (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-Swift-Compilation-Requirements -- /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -module-name TISwiftUtils -Onone -enforce-exclusivity\=checked @/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.SwiftFileList -DDEBUG -D COCOAPODS -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -target arm64-apple-ios9.0 -enable-bare-slash-regex -g -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -enable-testing -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -swift-version 5 -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -c -j8 -enable-batch-mode -incremental -output-file-map /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-OutputFileMap.json -use-frontend-parseable-output -save-temps -no-color-diagnostics -serialize-diagnostics -emit-dependencies -emit-module -emit-module-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.swiftmodule -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -emit-objc-header -emit-objc-header-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-Swift.h -import-underlying-module -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -working-directory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -experimental-emit-module-separately - -SwiftDriverJobDiscovery normal arm64 Compiling Substring+Extensions.swift (in target 'TISwiftUtils' from project 'Pods') - -SwiftDriverJobDiscovery normal arm64 Compiling Selectable.swift (in target 'TISwiftUtils' from project 'Pods') - -SwiftDriverJobDiscovery normal arm64 Compiling Updatable.swift (in target 'TISwiftUtils' from project 'Pods') - -SwiftDriverJobDiscovery normal arm64 Compiling Typealias.swift (in target 'TISwiftUtils' from project 'Pods') - -SwiftDriverJobDiscovery normal arm64 Compiling Optional+Extensions.swift (in target 'TISwiftUtils' from project 'Pods') - -SwiftDriverJobDiscovery normal arm64 Compiling Array+SafeSubscript.swift (in target 'TISwiftUtils' from project 'Pods') - -SwiftDriverJobDiscovery normal arm64 Compiling BackingStore.swift (in target 'TISwiftUtils' from project 'Pods') - -SwiftMergeGeneratedHeaders /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Headers/TISwiftUtils-Swift.h /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-Swift.h (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-swiftHeaderTool -arch arm64 /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-Swift.h -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Headers/TISwiftUtils-Swift.h - -Copy /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Modules/TISwiftUtils.swiftmodule/arm64-apple-ios.swiftmodule /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.swiftmodule (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks -rename /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.swiftmodule /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Modules/TISwiftUtils.swiftmodule/arm64-apple-ios.swiftmodule - -Copy /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Modules/TISwiftUtils.swiftmodule/arm64-apple-ios.abi.json /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.abi.json (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks -rename /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.abi.json /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Modules/TISwiftUtils.swiftmodule/arm64-apple-ios.abi.json - -Copy /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Modules/TISwiftUtils.swiftmodule/arm64-apple-ios.swiftdoc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.swiftdoc (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks -rename /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.swiftdoc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Modules/TISwiftUtils.swiftmodule/arm64-apple-ios.swiftdoc - -Copy /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Modules/TISwiftUtils.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.swiftsourceinfo (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks -rename /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.swiftsourceinfo /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/Modules/TISwiftUtils.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo - -SwiftDriverJobDiscovery normal arm64 Compiling KeyPathEquatable.swift (in target 'TISwiftUtils' from project 'Pods') - -SwiftDriver\ Compilation TISwiftUtils normal arm64 com.apple.xcode.tools.swift.compiler (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-Swift-Compilation -- /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -module-name TISwiftUtils -Onone -enforce-exclusivity\=checked @/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.SwiftFileList -DDEBUG -D COCOAPODS -sdk /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -target arm64-apple-ios9.0 -enable-bare-slash-regex -g -module-cache-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -enable-testing -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -swift-version 5 -I /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -F /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -c -j8 -enable-batch-mode -incremental -output-file-map /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-OutputFileMap.json -use-frontend-parseable-output -save-temps -no-color-diagnostics -serialize-diagnostics -emit-dependencies -emit-module -emit-module-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.swiftmodule -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -Xcc -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -Xcc -DPOD_CONFIGURATION_DEBUG\=1 -Xcc -DDEBUG\=1 -Xcc -DCOCOAPODS\=1 -emit-objc-header -emit-objc-header-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-Swift.h -import-underlying-module -Xcc -ivfsoverlay -Xcc /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/unextended-module-overlay.yaml -working-directory /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods -experimental-emit-module-separately - -CompileC /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils_vers.o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/TISwiftUtils_vers.c normal arm64 c com.apple.compilers.llvm.clang.1_0.compiler (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c -target arm64-apple-ios9.0 -fmessage-length\=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit\=0 -std\=gnu11 -fmodules -gmodules -fmodules-cache-path\=/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -fmodules-prune-interval\=86400 -fmodules-prune-after\=345600 -fbuild-session-file\=/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror\=non-modular-include-in-framework-module -fmodule-name\=TISwiftUtils -Wno-trigraphs -fpascal-strings -O0 -fno-common -Wno-missing-field-initializers -Wno-missing-prototypes -Werror\=return-type -Wdocumentation -Wunreachable-code -Werror\=deprecated-objc-isa-usage -Werror\=objc-root-class -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-implicit-fallthrough -DPOD_CONFIGURATION_DEBUG\=1 -DDEBUG\=1 -DCOCOAPODS\=1 -isysroot /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -fstrict-aliasing -Wdeprecated-declarations -g -Wno-sign-conversion -Winfinite-recursion -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wno-semicolon-before-method-body -Wunguarded-availability -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -iquote /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -ivfsoverlay /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -iquote /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -F/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -MMD -MT dependencies -MF /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils_vers.d --serialize-diagnostics /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils_vers.dia -c /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/TISwiftUtils_vers.c -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils_vers.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils_vers.o - -CompileC /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-dummy.o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods/Target\ Support\ Files/TISwiftUtils/TISwiftUtils-dummy.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c -target arm64-apple-ios9.0 -fmessage-length\=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit\=0 -std\=gnu11 -fobjc-arc -fobjc-weak -fmodules -gmodules -fmodules-cache-path\=/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex -fmodules-prune-interval\=86400 -fmodules-prune-after\=345600 -fbuild-session-file\=/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/ModuleCache.noindex/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror\=non-modular-include-in-framework-module -fmodule-name\=TISwiftUtils -Wno-trigraphs -fpascal-strings -O0 -fno-common -Wno-missing-field-initializers -Wno-missing-prototypes -Werror\=return-type -Wdocumentation -Wunreachable-code -Wno-implicit-atomic-properties -Werror\=deprecated-objc-isa-usage -Wno-objc-interface-ivars -Werror\=objc-root-class -Wno-arc-repeated-use-of-weak -Wimplicit-retain-self -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wdeprecated-implementations -Wno-implicit-fallthrough -DPOD_CONFIGURATION_DEBUG\=1 -DDEBUG\=1 -DCOCOAPODS\=1 -DOBJC_OLD_DISPATCH_PROTOTYPES\=0 -isysroot /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -g -Wno-sign-conversion -Winfinite-recursion -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wno-semicolon-before-method-body -Wunguarded-availability -index-store-path /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Index.noindex/DataStore -iquote /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-generated-files.hmap -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-own-target-headers.hmap -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-all-non-framework-target-headers.hmap -ivfsoverlay /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/all-product-headers.yaml -iquote /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/TISwiftUtils-project-headers.hmap -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/include -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources-normal/arm64 -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources/arm64 -I/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/DerivedSources -F/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -include /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods/Target\ Support\ Files/TISwiftUtils/TISwiftUtils-prefix.pch -MMD -MT dependencies -MF /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-dummy.d --serialize-diagnostics /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-dummy.dia -c /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods/Target\ Support\ Files/TISwiftUtils/TISwiftUtils-dummy.m -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-dummy.o -index-unit-output-path /Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils-dummy.o - -Ld /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/TISwiftUtils normal (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -target arm64-apple-ios9.0 -dynamiclib -isysroot /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -L/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/EagerLinkingTBDs -L/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -L/Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos -L/Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk/usr/lib/swift -F/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/EagerLinkingTBDs -F/Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils -filelist /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.LinkFileList -install_name @rpath/TISwiftUtils.framework/TISwiftUtils -Xlinker -rpath -Xlinker /usr/lib/swift -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -dead_strip -Xlinker -object_path_lto -Xlinker /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -fobjc-arc -fobjc-link-runtime -L/Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos -L/usr/lib/swift -Xlinker -add_ast_path -Xlinker /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils.swiftmodule -framework Foundation -compatibility_version 1 -current_version 1 -Xlinker -dependency_info -Xlinker /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils_dependency_info.dat -o /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/TISwiftUtils - -ExtractAppIntentsMetadata (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /Applications/Xcode-14.1.0.app/Contents/Developer/usr/bin/appintentsmetadataprocessor --output /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework --toolchain-dir /Applications/Xcode-14.1.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain --module-name TISwiftUtils --source-files /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Array/Array+SafeSubscript.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/PropertyWrappers/BackingStore.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/KeyPathEquatable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Optional/Optional+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Selectable.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Extensions/Substring/Substring+Extensions.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Helpers/Typealias.swift /Users/castlelecs/dev/TI/LeadKit/TISwiftUtils/Sources/Protocols/Updatable.swift --sdk-root /Applications/Xcode-14.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk --target-triple arm64-apple-ios9.0 --binary-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework/TISwiftUtils --dependency-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/TISwiftUtils_dependency_info.dat --stringsdata-file /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/TISwiftUtils.build/Objects-normal/arm64/ExtractedAppShortcutsMetadata.stringsdata -note: Metadata extraction skipped. No AppIntents.framework dependency found. (in target 'TISwiftUtils' from project 'Pods') - -RegisterExecutionPolicyException /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - builtin-RegisterExecutionPolicyException /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework - -Touch /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework (in target 'TISwiftUtils' from project 'Pods') - cd /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/Contents/MacOS/Pods - /usr/bin/touch -c /Users/castlelecs/dev/TI/LeadKit/TIUIElements/TIUIElements.app/nef/derivedData/Build/Products/Debug-iphoneos/TISwiftUtils/TISwiftUtils.framework - -** BUILD SUCCEEDED ** - - ---- xcodebuild: WARNING: Using the first of multiple matching destinations: -{ platform:iOS, id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Any iOS Device } -{ platform:macOS, arch:arm64, variant:Designed for [iPad,iPhone], id:00006000-001A45A90A38801E } -{ platform:macOS, arch:arm64, variant:Mac Catalyst, id:00006000-001A45A90A38801E } -{ platform:macOS, arch:x86_64, variant:Mac Catalyst, id:00006000-001A45A90A38801E } -{ platform:iOS Simulator, id:dvtdevice-DVTiOSDeviceSimulatorPlaceholder-iphonesimulator:placeholder, name:Any iOS Simulator Device } -{ platform:macOS, variant:Mac Catalyst, name:Any Mac } -{ platform:iOS Simulator, id:145EC07C-F296-4278-A888-B7CF37FA1EC8, OS:13.7, name:iPad (7th generation) } -{ platform:iOS Simulator, id:08E4B84C-C097-4C7E-BC60-8ECCD40CB177, OS:14.5, name:iPad (8th generation) } -{ platform:iOS Simulator, id:E9148A48-FC50-4762-8F53-97BB0F22467B, OS:16.1, name:iPad (9th generation) } -{ platform:iOS Simulator, id:CFBD08A7-2C48-40E7-9B2A-4884B21C3762, OS:16.1, name:iPad (10th generation) } -{ platform:iOS Simulator, id:CC320C42-F278-48B6-BC34-90560000A81C, OS:13.7, name:iPad Air (3rd generation) } -{ platform:iOS Simulator, id:A5B0C0F2-133F-4756-9540-F8A17A558FD2, OS:14.5, name:iPad Air (4th generation) } -{ platform:iOS Simulator, id:B77DEE3C-0C18-4019-9FA5-68A563A14416, OS:16.1, name:iPad Air (4th generation) } -{ platform:iOS Simulator, id:140A73D3-ACE6-4BB6-B55A-5EBCEA16E1FB, OS:16.1, name:iPad Air (5th generation) } -{ platform:iOS Simulator, id:14ABDEC5-BBCB-458D-ADDD-E9ECF308C2F3, OS:13.7, name:iPad Pro (9.7-inch) } -{ platform:iOS Simulator, id:2DB7EDA2-B9D1-4533-AF6F-1BFC48AEDD86, OS:14.5, name:iPad Pro (9.7-inch) } -{ platform:iOS Simulator, id:B77939A7-1649-4017-8BD5-5B9ED7C6CCC2, OS:16.1, name:iPad Pro (9.7-inch) } -{ platform:iOS Simulator, id:083AE2B3-297C-4650-99A2-0D2812923363, OS:13.7, name:iPad Pro (11-inch) (2nd generation) } -{ platform:iOS Simulator, id:3AA553BC-4A9C-467E-BF2E-9E1CC83326E0, OS:14.5, name:iPad Pro (11-inch) (3rd generation) } -{ platform:iOS Simulator, id:18993EE0-9411-4BA1-9D4A-FE5B6DF99426, OS:16.1, name:iPad Pro (11-inch) (3rd generation) } -{ platform:iOS Simulator, id:AF3BF129-1A23-4687-B018-9C45C21C7754, OS:16.1, name:iPad Pro (11-inch) (4th generation) } -{ platform:iOS Simulator, id:AA747F19-1B64-4568-8D94-A490B8550158, OS:13.7, name:iPad Pro (12.9-inch) (4th generation) } -{ platform:iOS Simulator, id:A3AD7D85-5BEF-4723-945F-E48D50B25893, OS:14.5, name:iPad Pro (12.9-inch) (5th generation) } -{ platform:iOS Simulator, id:1332B60A-D40D-4C47-A21C-AB54D11ECE64, OS:16.1, name:iPad Pro (12.9-inch) (5th generation) } -{ platform:iOS Simulator, id:242FD6AB-EC1E-4F85-9E49-7CB1C73EE8C4, OS:16.1, name:iPad Pro (12.9-inch) (6th generation) } -{ platform:iOS Simulator, id:3F3632E6-992F-4263-A6DA-469E975E66C2, OS:16.1, name:iPad mini (6th generation) } -{ platform:iOS Simulator, id:7B2AE54A-C6E2-4DBE-B5DA-EF1B68760651, OS:13.7, name:iPhone 8 } -{ platform:iOS Simulator, id:3D9F33B1-1B48-4DDD-A94C-47877689437D, OS:14.5, name:iPhone 8 } -{ platform:iOS Simulator, id:4B8816C2-EE2E-49B7-BFC2-D481F695912C, OS:16.1, name:iPhone 8 } -{ platform:iOS Simulator, id:8B6C97C1-429A-47E3-A721-A9C848B6E200, OS:13.7, name:iPhone 8 Plus } -{ platform:iOS Simulator, id:9EC3FFEE-5F13-4D8E-8E87-963E68B7D65E, OS:14.5, name:iPhone 8 Plus } -{ platform:iOS Simulator, id:2C1F63A2-6046-4C04-8956-9F2DA6DFE870, OS:16.1, name:iPhone 8 Plus } -{ platform:iOS Simulator, id:08D955D1-819E-4645-805A-7712D6CC87F9, OS:13.7, name:iPhone 11 } -{ platform:iOS Simulator, id:20452FBF-A0EB-4850-A2C7-6644A468602C, OS:14.5, name:iPhone 11 } -{ platform:iOS Simulator, id:2AD77A31-4D2F-4708-B9EA-B4D33A82B7A1, OS:16.1, name:iPhone 11 } -{ platform:iOS Simulator, id:52C8F03F-609B-4AFA-9893-1ABD8828B358, OS:13.7, name:iPhone 11 Pro } -{ platform:iOS Simulator, id:DB2D56AE-A54B-4C7C-86DC-6BF4757374D4, OS:14.5, name:iPhone 11 Pro } -{ platform:iOS Simulator, id:24F1541E-02D8-409B-9D89-03A64999625E, OS:16.1, name:iPhone 11 Pro } -{ platform:iOS Simulator, id:E337433B-2EF8-4868-A358-A6EAF04761DB, OS:13.7, name:iPhone 11 Pro Max } -{ platform:iOS Simulator, id:A5F6097F-B4FC-4029-A8EE-C360FEF94FAE, OS:14.5, name:iPhone 11 Pro Max } -{ platform:iOS Simulator, id:1F6D5536-6ADC-49F7-9D4F-76C762E3899F, OS:16.1, name:iPhone 11 Pro Max } -{ platform:iOS Simulator, id:F1FCA9D8-B8F2-493A-8B37-7ACEE8358660, OS:14.5, name:iPhone 12 } -{ platform:iOS Simulator, id:0A9A1EE0-7176-43A7-8D7C-2F1C653041A4, OS:16.1, name:iPhone 12 } -{ platform:iOS Simulator, id:656F7B69-29D4-46BB-B742-B70F2BF8998D, OS:14.5, name:iPhone 12 Pro } -{ platform:iOS Simulator, id:3DD390FA-2E7A-47AB-9ABD-803E212314E5, OS:16.1, name:iPhone 12 Pro } -{ platform:iOS Simulator, id:1318900B-1128-4C72-8C2D-CBD67DAC54EC, OS:14.5, name:iPhone 12 Pro Max } -{ platform:iOS Simulator, id:F04B0B67-E895-4597-8570-CE1BE6034B44, OS:16.1, name:iPhone 12 Pro Max } -{ platform:iOS Simulator, id:E52A02A3-EE68-48FE-8571-4C946A46806D, OS:14.5, name:iPhone 12 mini } -{ platform:iOS Simulator, id:C4B396D6-8BCF-4C58-8F95-D67206FE314C, OS:16.1, name:iPhone 12 mini } -{ platform:iOS Simulator, id:6A7E47EF-CC95-4866-B9DA-720164E690D5, OS:16.1, name:iPhone 13 } -{ platform:iOS Simulator, id:02C796FD-9F67-4BE9-B7A2-F12A7C8ACFBC, OS:16.1, name:iPhone 13 Pro } -{ platform:iOS Simulator, id:833AF4B2-A0C5-454B-88C6-20588AD534DB, OS:16.1, name:iPhone 13 Pro Max } -{ platform:iOS Simulator, id:01CB8EB8-A1F0-46B7-B2BD-5BEA8B5294B8, OS:16.1, name:iPhone 13 mini } -{ platform:iOS Simulator, id:3007A0A4-B5F2-452E-B98A-A566DFA52665, OS:16.1, name:iPhone 14 } -{ platform:iOS Simulator, id:4013F0DC-6D53-4403-985A-82C83A109A3E, OS:16.1, name:iPhone 14 Plus } -{ platform:iOS Simulator, id:6C570C77-DB79-46B6-AE77-443071954BFA, OS:16.1, name:iPhone 14 Pro } -{ platform:iOS Simulator, id:8110DEFE-704E-43E4-B9CF-B233EC2B7C2C, OS:16.1, name:iPhone 14 Pro Max } -{ platform:iOS Simulator, id:87682CB9-576A-4DCD-B1EF-A4F9DC47D529, OS:13.7, name:iPhone SE (1st gen) 13.7 } -{ platform:iOS Simulator, id:0D11912F-CF83-408A-A093-8BFC39FF412D, OS:14.5, name:iPhone SE (1st generation) } -{ platform:iOS Simulator, id:B7340A40-ADF6-4245-90B2-974A5D1295E1, OS:14.5, name:iPhone SE (1st generation) } -{ platform:iOS Simulator, id:3C5AC83F-8CBA-4376-A55C-2546166E712D, OS:13.7, name:iPhone SE (2nd generation) } -{ platform:iOS Simulator, id:C0B96D96-21B6-47C5-A77B-158BDDA6E487, OS:14.5, name:iPhone SE (2nd generation) } -{ platform:iOS Simulator, id:B3E0C921-3C88-40C6-8A7B-3A7B48F7FB5A, OS:16.1, name:iPhone SE (2nd generation) } -{ platform:iOS Simulator, id:7DEFEEE5-D973-4AE4-842C-D9DCD75E464D, OS:16.1, name:iPhone SE (3rd generation) } -{ platform:iOS Simulator, id:D9AF4B7D-5974-4010-82CE-716CB0803302, OS:14.5, name:iPod touch (7th generation) } diff --git a/TIUIElements/TIUIElements.app/nef/log/tiuielements-skeletons.log b/TIUIElements/TIUIElements.app/nef/log/tiuielements-skeletons.log deleted file mode 100644 index 530b6e12..00000000 --- a/TIUIElements/TIUIElements.app/nef/log/tiuielements-skeletons.log +++ /dev/null @@ -1,4 +0,0 @@ - -/var/folders/l0/vmsk54092zb07vg6t9h5j5bc0000gn/T/main.swift:2:8: error: no such module 'TIUIElements' -import TIUIElements - ^ diff --git a/TIUIKitCore/Sources/TextAttributes/BaseTextAttributes/BaseTextAttributes.swift b/TIUIKitCore/Sources/TextAttributes/BaseTextAttributes/BaseTextAttributes.swift index 4a602848..bc589798 100644 --- a/TIUIKitCore/Sources/TextAttributes/BaseTextAttributes/BaseTextAttributes.swift +++ b/TIUIKitCore/Sources/TextAttributes/BaseTextAttributes/BaseTextAttributes.swift @@ -157,6 +157,9 @@ open class BaseTextAttributes { var configuration = UIButton.Configuration.plain() if let title = string { + button.setTitle(nil, for: .normal) + button.setAttributedTitle(nil, for: .normal) + configuration.attributedTitle = attributedString(for: title) button.configuration = configuration } diff --git a/docs/tiuielements/skeletons.md b/docs/tiuielements/skeletons.md index 609f18f3..bfed2c8a 100644 --- a/docs/tiuielements/skeletons.md +++ b/docs/tiuielements/skeletons.md @@ -3,43 +3,92 @@ При импорте _TIUIElements_ вы можете использовать API для показа скелетонов. -## Базовая настройка +## Принцип работы - Чтобы `UIViewController` или `UIView` мог показать скелетоны необходимо, чтобы он соответствовал протоколу `SkeletonsPresenter`. + При использовании методов показа скелетонов: + 1. происходит скрытие всех subview в иерархии той view, на которой был вызван метод + 2. далее происходит проход по view, которые можно сконвертировать в скелетоны (список либо определяется пользователем, либо конвертация будет происходить автоматически), создается `CALayer` типа `SkeletonLayer`, представляющий конвертируемую view + 3. поверх view с которой начался показ, добавляются все созданные `SkeletonLayer` + + > Таким образом скелетоны не модифицируют размеры view и не изменяют ее положение + +## Как начать пользоваться + + Базовая настройка для показа скелетонов не требуется. `UIView` и `UIViewController` уже имеют все необходимые методы для работы: + - `showSkeletons(viewsToSkeletone:_:)` : используется для показа скелетонов, если была передана конфигурация анимации, то она запустится автоматически. `viewsToSkeletone` - опциональный массив `UIView`, определяющий, какие вью будут конвертироваться в скелетоны. Если nil, то проход будет осуществляться по списку subview + - `hideSkeletons()` : используется для скрытия скелетонов + - `startAnimation()` : используется для старта анимации на скелетонах (если анимания не была сконфигурирована в методе `showSkeletons(viewsToSkeletone:_:)` то ничего не произойдет) + - `stopAnimation()` : используется для остановки анимации на скелетонах ```swift +import TIUIKitCore import TIUIElements import UIKit -class DummyVC: UIViewController, SkeletonsPresenter { -} -``` +class CanShowAndHideSkeletons: BaseInitializableViewController { -Чтобы показать или скрыть скелетоны необходимо использовать методы `showSkeletons()` и `hideSkeletons()` + private let imageView = UIImageView(image: UIImage(systemName: "apple.logo")) + private let label = UILabel() + private let button = UIButton(type: .custom) -```swift -class CanShowAndHideSkeletons: UIViewController, SkeletonsPresenter { - lazy var button: UIButton = { - let button = UIButton(frame: CGRect(x: .zero, y: .zero, - width: view.frame.width, height: view.frame.height)) - - button.setTitle("Hello from SkeletonableViewController", for: .normal) - button.setTitleColor(.black, for: .normal) - button.titleLabel?.font = .systemFont(ofSize: 30) - button.addTarget(self, action: #selector(toggleSkeletons), for: .touchUpInside) - return button - }() + override func addViews() { + super.addViews() - override func viewDidLoad() { - super.viewDidLoad() - - view.backgroundColor = .red - view.frame = CGRect(x: 0, y: 0, width: 250, height: 250) - view.addSubview(button) + view.addSubviews(imageView, label, button) } - @objc func toggleSkeletons() { - showSkeletons() + override func configureLayout() { + super.configureLayout() + + [imageView, label, button] + .forEach { $0.translatesAutoresizingMaskIntoConstraints = false } + + NSLayoutConstraint.activate([ + imageView.heightAnchor.constraint(equalToConstant: 40), + imageView.widthAnchor.constraint(equalToConstant: 40), + imageView.centerYAnchor.constraint(equalTo: label.centerYAnchor), + imageView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + + label.topAnchor.constraint(equalTo: view.topAnchor), + label.trailingAnchor.constraint(equalTo: view.trailingAnchor), + label.leadingAnchor.constraint(equalTo: imageView.trailingAnchor), + label.heightAnchor.constraint(equalToConstant: 60), + + button.leadingAnchor.constraint(equalTo: view.leadingAnchor), + button.topAnchor.constraint(equalTo: label.bottomAnchor), + button.trailingAnchor.constraint(equalTo: view.trailingAnchor), + button.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) + } + + override func bindViews() { + super.bindViews() + + button.addTarget(self, action: #selector(toggleSkeletons), for: .touchUpInside) + } + + override func configureAppearance() { + super.configureAppearance() + + label.text = "Hello from SkeletonableViewController" + button.setTitle("show skeletons", for: .normal) + + let textAttributes = BaseTextAttributes(font: .systemFont(ofSize: 25), color: .black, alignment: .natural, isMultiline: false) + + view.configureUIView(appearance: UIView.DefaultAppearance(backgroundColor: .white)) + + label.configureUILabel(appearance: UILabel.DefaultAppearance.make { + $0.textAttributes = textAttributes + }) + + button.configureUIButton(appearance: UILabel.DefaultAppearance.make { + $0.textAttributes = textAttributes + }) + } + + @objc private func toggleSkeletons() { + // Т.к. передается nil, скелетонится будут все subview (в данном случае view.subview == [button]) + showSkeletons(viewsToSkeletone: nil, .init()) DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) { [weak self] in self?.hideSkeletons() @@ -48,19 +97,43 @@ class CanShowAndHideSkeletons: UIViewController, SkeletonsPresenter { } ``` -Можно так же указать, какие вью будут конвертироваться в скелетоны +## Skeletonable + + Если необходимо изменить список конвертируемых в скелетоны view у какой-нибудь из отдельных view в иерархии, можно подписать его под протокол `Skeletonable` ```swift -class CustomSkeletonableTableView: UITableView, SkeletonsPresenter { - var viewsToSkeletone: [UIView] { - visibleCells +extension UITableViewCell: Skeletonable { + public var viewsToSkeletone: [UIView] { + contentView.subviews } } ``` +## SkeletonsPresenter + + Чтобы не приходилось постоянно передавать в методы необходимые параметры для конфигурации можно соответствовать протоколу `SkeletonsPresenter`. Протокол дает возможность определять свойства для конфигурации скелетонов внутри view или viewController, вызывать метод `showSkeletons()` без передачи каких-либо параметров + + Перепишем _CanShowAndHideSkeletons_ под использование протокола + +```swift +class CanShowAndHideWithSkeletonsPresenter: CanShowAndHideSkeletons, SkeletonsPresenter { + var skeletonsConfiguration: SkeletonsConfiguration { + SkeletonsConfiguration(skeletonsBackgroundColor: .gray) + } +} + +let canShowAndHideController = CanShowAndHideWithSkeletonsPresenter() +``` + +Skeletons will be shown with custom configuration + +```swift +canShowAndHideController.showSkeletons() +``` + ## Конфигурация внешнего вида - Для конфигурации скелетонов существует клас `SkeletonsConfiguration` который определяется внутри объекта реализующего протокол `SkeletonsPresenter`. + Для конфигурации скелетонов существует класс `SkeletonsConfiguration` ```swift class CustomConfigurableSkeletonableView: UIView, SkeletonsPresenter { @@ -77,6 +150,8 @@ class CustomConfigurableSkeletonableView: UIView, SkeletonsPresenter { - форма - отступы + > При этом все view делятся на: `UIView` с subviews (контейнеры), `UIView` без subviews, `UILabel`, `UITextView` и `UIImageView`. Для контейнеров доступна только настройка `borderWidth`, а `borderColor` используется тот же, что и для других скелетонов + ### Анимация `SkeletonsConfiguration` для настройки анимации принимает тип `(SkeletonsLayer) -> CAAnimationGroup`. Это означает, что при необходимости вы можете создать любую необходимую анимацию. Анимация будет применена к каждому скелетону. @@ -85,26 +160,26 @@ class CustomConfigurableSkeletonableView: UIView, SkeletonsPresenter { ```swift public enum SkeletonsAnimationDirection { - case leftToRight - case rightToLeft - case topToBottom - case bottomToTop - case topLeftToBottomRight - case topRightToBottomLeft - case bottomLeftToTopRight - case bottomRightToTopLeft + case leftToRight + case rightToLeft + case topToBottom + case bottomToTop + case topLeftToBottomRight + case topRightToBottomLeft + case bottomLeftToTopRight + case bottomRightToTopLeft } ``` ```swift let confWithLeftToRightAnim = SkeletonsConfiguration(animation: { _ in - let animConfig = DirectionalSkeletonsAnimationConfiguration(direction: .leftToRight, duration: 1.5) - return SkeletonsAnimationBuilder.createDirectionalGradientAnimation(animConfig) + let animConfig = DirectionalSkeletonsAnimationConfiguration(direction: .leftToRight, duration: 1.5) + return SkeletonsAnimationBuilder.createDirectionalGradientAnimation(animConfig) }) let confWithTopToBottomAnim = SkeletonsConfiguration(animation: { _ in - let animConfig = DirectionalSkeletonsAnimationConfiguration(direction: .topToBottom, duration: 1.5) - return SkeletonsAnimationBuilder.createDirectionalGradientAnimation(animConfig) + let animConfig = DirectionalSkeletonsAnimationConfiguration(direction: .topToBottom, duration: 1.5) + return SkeletonsAnimationBuilder.createDirectionalGradientAnimation(animConfig) }) ``` @@ -130,23 +205,23 @@ var confWithShape: SkeletonsConfiguration { } ``` - Для `UILabel` и `UITextView` есть возможность настроить высоту каждой строчки, расстояние между ними и их количество. +Для `UILabel` и `UITextView` есть возможность настроить высоту каждой строчки, расстояние между ними и их количество. ```swift var confWithLabelSettings: SkeletonsConfiguration { let labelConf = TextSkeletonsConfiguration(numberOfLines: 3, lineHeight: { font in - if let font = font { - return font.pointSize - } - return 10 + if let font = font { + return font.pointSize + } + return 10 - }, lineSpacing: { font in - if let font = font { - return font.xHeight - } - return 5 - }) + }, lineSpacing: { font in + if let font = font { + return font.xHeight + } + return 5 + }) return .init(labelConfiguration: labelConf) } ``` @@ -171,17 +246,71 @@ var confWithPadding: SkeletonsConfiguration { ```swift public protocol SkeletonsConfigurationDelegate: AnyObject { - func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) + func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) } ``` ```swift class SkeletonsConfDelegate: SkeletonsConfigurationDelegate { - func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) { - // Do something... - } + func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) { + if case .imageView(_) = type { + layer.frame = .init(x: layer.frame.minX - 20, + y: layer.frame.minY - 20, + width: layer.frame.width, + height: layer.frame.height) + } + } } let delegate = SkeletonsConfDelegate() let confWithDelegate = SkeletonsConfiguration(configurationDelegate: delegate) ``` + +### Особенности + + Т.к. размеры view на основе которой строятся скелетоны не модифицируются, может возникнуть ситуация, когда одни скелетоны перекрывают другие. Например, когда размер view меньше ее скелетонов. В таких случаях как раз может помочь установка позиции или размеров в методе делегата `SkeletonsConfigurationDelegate` + + Также в качестве способа обойти такую ситуацию можно передавать во view моковые данные для увеличения ее размеров, чтобы размеры били хотя бы примерно похожи на размер скелетонов, как в примере: + +```swift +extension DefaultTitleSubtitleView: SkeletonsPresenter { + public var skeletonsConfiguration: SkeletonsConfiguration { + .init(labelConfiguration: .init(numberOfLines: 3)) + } +} + +let titleSubtitleView = DefaultTitleSubtitleView() +titleSubtitleView.configure(appearance: .make { + $0.titleAppearance.update { + $0.textAttributes = .init(font: .systemFont(ofSize: 15), color: .black, alignment: .natural, isMultiline: true) + } + $0.subtitleAppearance.update { + $0.textAttributes = .init(font: .systemFont(ofSize: 15), color: .black, alignment: .natural, isMultiline: true) + } +}) +titleSubtitleView.configure(with: .init(title: "very very long mock string to make multiple lines", + subtitle: "very very long mock string to make multiple lines")) + +titleSubtitleView.showSkeletons() + +DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) { + titleSubtitleView.configure(with: .init(title: "normal data from a request", + subtitle: "normal data from a request")) + titleSubtitleView.hideSkeletons() +} +``` + +## Тестовый сконфигурированный контроллер + +```swift +import PlaygroundSupport + +canShowAndHideController.view.frame = .init(origin: .zero, size: .init(width: 250, height: 100)) + +canShowAndHideController.hideSkeletons() +confWithLeftToRightAnim.labelConfiguration = .init(numberOfLines: 2) + +PlaygroundPage.current.liveView = canShowAndHideController + +canShowAndHideController.showSkeletons(viewsToSkeletone: nil, confWithLeftToRightAnim) +``` diff --git a/project-scripts/gen_docs_from_playgrounds.sh b/project-scripts/gen_docs_from_playgrounds.sh index ec44cc0f..1c5e3242 100755 --- a/project-scripts/gen_docs_from_playgrounds.sh +++ b/project-scripts/gen_docs_from_playgrounds.sh @@ -12,5 +12,5 @@ ${SRCROOT}/TIUIElements/TIUIElements.app" for playground_path in ${PLAYGROUNDS}; do nef compile --project ${playground_path} - nef markdown --project ${playground_path} --output ../docs + nef markdown --project ${playground_path} --output ${SRCROOT}/docs done From cfd5d5f2f86ec9a04467adef5aadc3b711606609 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Tue, 7 Mar 2023 20:23:58 +0300 Subject: [PATCH 18/25] fix: code review notes --- .../Skeletons.xcplaygroundpage/Contents.swift | 31 ++++++++++++------- docs/tiuielements/skeletons.md | 31 ++++++++++++------- 2 files changed, 38 insertions(+), 24 deletions(-) diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift index a32529a3..fb8e5596 100644 --- a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift @@ -86,7 +86,7 @@ class CanShowAndHideSkeletons: BaseInitializableViewController { } @objc private func toggleSkeletons() { - // Т.к. передается nil, скелетонится будут все subview (в данном случае view.subview == [button]) + // Т.к. передается nil, скелетонится будут все subview (в данном случае view.subview == [button, label, imageView]) showSkeletons(viewsToSkeletone: nil, .init()) DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) { [weak self] in @@ -144,7 +144,14 @@ class CustomConfigurableSkeletonableView: UIView, SkeletonsPresenter { - форма - отступы - > При этом все view делятся на: `UIView` с subviews (контейнеры), `UIView` без subviews, `UILabel`, `UITextView` и `UIImageView`. Для контейнеров доступна только настройка `borderWidth`, а `borderColor` используется тот же, что и для других скелетонов + При этом все view делятся на: + - `UIView` с subviews (контейнеры) + - `UIView` без subviews + - `UILabel` + - `UITextView` + - `UIImageView` + + > Для контейнеров доступна только настройка `borderWidth`, а `borderColor` используется тот же, что и для других скелетонов ### Анимация @@ -154,14 +161,14 @@ class CustomConfigurableSkeletonableView: UIView, SkeletonsPresenter { ```swift public enum SkeletonsAnimationDirection { - case leftToRight - case rightToLeft - case topToBottom - case bottomToTop - case topLeftToBottomRight - case topRightToBottomLeft - case bottomLeftToTopRight - case bottomRightToTopLeft + case leftToRight + case rightToLeft + case topToBottom + case bottomToTop + case topLeftToBottomRight + case topRightToBottomLeft + case bottomLeftToTopRight + case bottomRightToTopLeft } ``` */ @@ -233,7 +240,7 @@ var confWithPadding: SkeletonsConfiguration { ```swift public protocol SkeletonsConfigurationDelegate: AnyObject { - func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) + func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) } ``` */ @@ -256,7 +263,7 @@ let confWithDelegate = SkeletonsConfiguration(configurationDelegate: delegate) Т.к. размеры view на основе которой строятся скелетоны не модифицируются, может возникнуть ситуация, когда одни скелетоны перекрывают другие. Например, когда размер view меньше ее скелетонов. В таких случаях как раз может помочь установка позиции или размеров в методе делегата `SkeletonsConfigurationDelegate` - Также в качестве способа обойти такую ситуацию можно передавать во view моковые данные для увеличения ее размеров, чтобы размеры били хотя бы примерно похожи на размер скелетонов, как в примере: + Также в качестве способа обойти такую ситуацию можно передавать во view моковые данные для увеличения ее размеров, чтобы размеры были хотя бы примерно похожи на размер скелетонов, как в примере: */ extension DefaultTitleSubtitleView: SkeletonsPresenter { public var skeletonsConfiguration: SkeletonsConfiguration { diff --git a/docs/tiuielements/skeletons.md b/docs/tiuielements/skeletons.md index bfed2c8a..41da669d 100644 --- a/docs/tiuielements/skeletons.md +++ b/docs/tiuielements/skeletons.md @@ -87,7 +87,7 @@ class CanShowAndHideSkeletons: BaseInitializableViewController { } @objc private func toggleSkeletons() { - // Т.к. передается nil, скелетонится будут все subview (в данном случае view.subview == [button]) + // Т.к. передается nil, скелетонится будут все subview (в данном случае view.subview == [button, label, imageView]) showSkeletons(viewsToSkeletone: nil, .init()) DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) { [weak self] in @@ -150,7 +150,14 @@ class CustomConfigurableSkeletonableView: UIView, SkeletonsPresenter { - форма - отступы - > При этом все view делятся на: `UIView` с subviews (контейнеры), `UIView` без subviews, `UILabel`, `UITextView` и `UIImageView`. Для контейнеров доступна только настройка `borderWidth`, а `borderColor` используется тот же, что и для других скелетонов + При этом все view делятся на: + - `UIView` с subviews (контейнеры) + - `UIView` без subviews + - `UILabel` + - `UITextView` + - `UIImageView` + + > Для контейнеров доступна только настройка `borderWidth`, а `borderColor` используется тот же, что и для других скелетонов ### Анимация @@ -160,14 +167,14 @@ class CustomConfigurableSkeletonableView: UIView, SkeletonsPresenter { ```swift public enum SkeletonsAnimationDirection { - case leftToRight - case rightToLeft - case topToBottom - case bottomToTop - case topLeftToBottomRight - case topRightToBottomLeft - case bottomLeftToTopRight - case bottomRightToTopLeft + case leftToRight + case rightToLeft + case topToBottom + case bottomToTop + case topLeftToBottomRight + case topRightToBottomLeft + case bottomLeftToTopRight + case bottomRightToTopLeft } ``` @@ -246,7 +253,7 @@ var confWithPadding: SkeletonsConfiguration { ```swift public protocol SkeletonsConfigurationDelegate: AnyObject { - func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) + func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) } ``` @@ -270,7 +277,7 @@ let confWithDelegate = SkeletonsConfiguration(configurationDelegate: delegate) Т.к. размеры view на основе которой строятся скелетоны не модифицируются, может возникнуть ситуация, когда одни скелетоны перекрывают другие. Например, когда размер view меньше ее скелетонов. В таких случаях как раз может помочь установка позиции или размеров в методе делегата `SkeletonsConfigurationDelegate` - Также в качестве способа обойти такую ситуацию можно передавать во view моковые данные для увеличения ее размеров, чтобы размеры били хотя бы примерно похожи на размер скелетонов, как в примере: + Также в качестве способа обойти такую ситуацию можно передавать во view моковые данные для увеличения ее размеров, чтобы размеры были хотя бы примерно похожи на размер скелетонов, как в примере: ```swift extension DefaultTitleSubtitleView: SkeletonsPresenter { From cb29a3e9ca0b22b8724184c304354480e0f05949 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Thu, 9 Mar 2023 12:46:12 +0300 Subject: [PATCH 19/25] fix: code review notes --- .../BaseViewSkeletonsConfiguration.swift | 2 +- .../ContainerViewSkeletonsConfiguration.swift | 37 ++++++++++++++++ .../SkeletonsConfiguration.swift | 14 +++--- .../TextSkeletonsConfiguration.swift | 2 +- .../Protocols/SkeletonsPresenter.swift | 44 +++++++++---------- .../Views/Skeletons/SkeletonLayer.swift | 30 +++++++++++-- .../UIView+PresentingSkeletons.swift | 4 +- .../Skeletons.xcplaygroundpage/Contents.swift | 10 ++++- docs/tiuielements/skeletons.md | 13 +++++- 9 files changed, 118 insertions(+), 38 deletions(-) create mode 100644 TIUIElements/Sources/Views/Skeletons/Configuration/ContainerViewSkeletonsConfiguration.swift diff --git a/TIUIElements/Sources/Views/Skeletons/Configuration/BaseViewSkeletonsConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Configuration/BaseViewSkeletonsConfiguration.swift index cc9e0cbd..5ad77c0e 100644 --- a/TIUIElements/Sources/Views/Skeletons/Configuration/BaseViewSkeletonsConfiguration.swift +++ b/TIUIElements/Sources/Views/Skeletons/Configuration/BaseViewSkeletonsConfiguration.swift @@ -33,7 +33,7 @@ open class BaseViewSkeletonsConfiguration { public var padding: UIEdgeInsets public var shape: Shape - public init(padding: UIEdgeInsets = .zero, shape: Shape = .rectangle(cornerRadius: .zero)) { + public init(padding: UIEdgeInsets = .edges(5), shape: Shape = .rectangle(cornerRadius: .zero)) { self.shape = shape self.padding = padding } diff --git a/TIUIElements/Sources/Views/Skeletons/Configuration/ContainerViewSkeletonsConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Configuration/ContainerViewSkeletonsConfiguration.swift new file mode 100644 index 00000000..98fc81ea --- /dev/null +++ b/TIUIElements/Sources/Views/Skeletons/Configuration/ContainerViewSkeletonsConfiguration.swift @@ -0,0 +1,37 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import UIKit + +open class ContainerViewSkeletonsConfiguration: BaseViewSkeletonsConfiguration { + + public var borderWidth: CGFloat + + public init(borderWidth: CGFloat = .zero, + padding: UIEdgeInsets = .zero, + shape: Shape = .rectangle(cornerRadius: .zero)) { + + self.borderWidth = borderWidth + + super.init(padding: padding, shape: shape) + } +} diff --git a/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift index 42cd0227..0e8f449b 100644 --- a/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift +++ b/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift @@ -26,43 +26,43 @@ import UIKit open class SkeletonsConfiguration { public var viewConfiguration: BaseViewSkeletonsConfiguration + public var containerViewConfiguration: ContainerViewSkeletonsConfiguration public var labelConfiguration: TextSkeletonsConfiguration public var imageViewConfiguration: BaseViewSkeletonsConfiguration public var animation: Closure? public var skeletonsBackgroundColor: CGColor public var skeletonsMovingColor: CGColor - public var borderWidth: CGFloat public weak var configurationDelegate: SkeletonsConfigurationDelegate? open var isContainersHidden: Bool { - borderWidth == .zero + containerViewConfiguration.borderWidth == .zero } // MARK: - Init public init(viewConfiguration: BaseViewSkeletonsConfiguration = .init(), + containerViewConfiguration: ContainerViewSkeletonsConfiguration = .init(), labelConfiguration: TextSkeletonsConfiguration = .init(), imageViewConfiguration: BaseViewSkeletonsConfiguration = .init(shape: .circle), animation: Closure? = nil, skeletonsBackgroundColor: UIColor = .lightGray.withAlphaComponent(0.7), - borderWidth: CGFloat = .zero, configurationDelegate: SkeletonsConfigurationDelegate? = nil) { self.viewConfiguration = viewConfiguration + self.containerViewConfiguration = containerViewConfiguration self.labelConfiguration = labelConfiguration self.imageViewConfiguration = imageViewConfiguration self.animation = animation self.skeletonsBackgroundColor = skeletonsBackgroundColor.cgColor self.skeletonsMovingColor = skeletonsBackgroundColor.withAlphaComponent(0.2).cgColor - self.borderWidth = borderWidth self.configurationDelegate = configurationDelegate } // MARK: - Open methods - open func createSkeletonLayer(for baseView: UIView?) -> SkeletonLayer { + open func createSkeletonLayer(for baseView: UIView) -> SkeletonLayer { SkeletonLayer(config: self, baseView: baseView) } @@ -75,9 +75,9 @@ open class SkeletonsConfiguration { if !isContainersHidden { layer.borderColor = skeletonsBackgroundColor - layer.borderWidth = borderWidth + layer.borderWidth = containerViewConfiguration.borderWidth - if case let .rectangle(cornerRadius: radius) = viewConfiguration.shape { + if case let .rectangle(cornerRadius: radius) = containerViewConfiguration.shape { layer.cornerRadius = radius } } diff --git a/TIUIElements/Sources/Views/Skeletons/Configuration/TextSkeletonsConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Configuration/TextSkeletonsConfiguration.swift index b860329d..ef68b06a 100644 --- a/TIUIElements/Sources/Views/Skeletons/Configuration/TextSkeletonsConfiguration.swift +++ b/TIUIElements/Sources/Views/Skeletons/Configuration/TextSkeletonsConfiguration.swift @@ -43,7 +43,7 @@ open class TextSkeletonsConfiguration: BaseViewSkeletonsConfiguration { public init(numberOfLines: Int? = nil, lineHeight: Closure? = nil, lineSpacing: Closure? = nil, - padding: UIEdgeInsets = .zero, + padding: UIEdgeInsets = .edges(5), shape: Shape = .rectangle(cornerRadius: .zero)) { self.numberOfLines = numberOfLines diff --git a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift index b808a121..d225b6db 100644 --- a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift +++ b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift @@ -23,6 +23,7 @@ import UIKit public protocol SkeletonsPresenter { + var skeletonsHolder: UIView { get } var skeletonsConfiguration: SkeletonsConfiguration { get } var isSkeletonsHidden: Bool { get } var viewsToSkeletone: [UIView] { get } @@ -40,38 +41,37 @@ extension SkeletonsPresenter { public var skeletonsConfiguration: SkeletonsConfiguration { SkeletonsConfiguration() } + + public var isSkeletonsHidden: Bool { + isSkeletonsHidden(forView: skeletonsHolder) + } + + public var viewsToSkeletone: [UIView] { + skeletonsHolder.skeletonableViews + } + + public func showSkeletons() { + skeletonsHolder.showSkeletons(viewsToSkeletone: viewsToSkeletone, + skeletonsConfiguration) + } + + func isSkeletonsHidden(forView view: UIView) -> Bool { + (view.layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil + } } // MARK: - UIView + SkeletonsPresenter extension SkeletonsPresenter where Self: UIView { - public var isSkeletonsHidden: Bool { - (layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil - } - - public var viewsToSkeletone: [UIView] { - skeletonableViews - } - - public func showSkeletons() { - showSkeletons(viewsToSkeletone: viewsToSkeletone, - skeletonsConfiguration) + public var skeletonsHolder: UIView { + self } } // MARK: - UIViewController + SkeletonsPresenter extension SkeletonsPresenter where Self: UIViewController { - public var isSkeletonsHidden: Bool { - (view.layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil - } - - public var viewsToSkeletone: [UIView] { - view.skeletonableViews - } - - public func showSkeletons() { - showSkeletons(viewsToSkeletone: viewsToSkeletone, - skeletonsConfiguration) + public var skeletonsHolder: UIView { + view } } diff --git a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift index d8908764..6e339243 100644 --- a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift +++ b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift @@ -63,6 +63,10 @@ open class SkeletonLayer: CAShapeLayer { public var configuration: SkeletonsConfiguration public weak var baseView: UIView? + public var isAnimating: Bool { + animationLayer.animation(forKey: Constants.animationKeyPath) != nil + } + // MARK: - Init // For debug purposes in Lookin or other programs for view hierarchy inspections @@ -72,7 +76,7 @@ open class SkeletonLayer: CAShapeLayer { super.init(layer: layer) } - public init(config: SkeletonsConfiguration, baseView: UIView?) { + public init(config: SkeletonsConfiguration, baseView: UIView) { self.configuration = config self.baseView = baseView @@ -85,6 +89,10 @@ open class SkeletonLayer: CAShapeLayer { super.init(coder: coder) } + deinit { + NotificationCenter.default.removeObserver(self) + } + // MARK: - Open methods open func bind(to viewType: ViewType) { @@ -95,6 +103,13 @@ open class SkeletonLayer: CAShapeLayer { self?.updateGeometry(viewType: view.viewType) } + if let _ = configuration.animation?(self) { + NotificationCenter.default.addObserver(self, + selector: #selector(SkeletonLayer.restartAnimationIfNeeded), + name: UIApplication.willEnterForegroundNotification, + object: nil) + } + configuration.configurationDelegate?.layerDidConfigured(forViewType: viewType, layer: self) } @@ -105,7 +120,7 @@ open class SkeletonLayer: CAShapeLayer { } open func startAnimation() { - guard let animation = configuration.animation?(self) else { + guard !isAnimating, let animation = configuration.animation?(self) else { return } @@ -148,11 +163,20 @@ open class SkeletonLayer: CAShapeLayer { path = configuration.imageViewConfiguration.drawPath(rect: viewType.view.bounds) frame = configuration.imageViewConfiguration.applyPadding(viewFrame: rect) - default: + case .container(_): + path = configuration.containerViewConfiguration.drawPath(rect: viewType.view.bounds) + frame = configuration.containerViewConfiguration.applyPadding(viewFrame: rect) + + case .generic(_): path = configuration.viewConfiguration.drawPath(rect: viewType.view.bounds) frame = configuration.viewConfiguration.applyPadding(viewFrame: rect) } animationLayer.frame = bounds } + + @objc private func restartAnimationIfNeeded() { + stopAnimation() + startAnimation() + } } diff --git a/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift index 9addca50..9900ece8 100644 --- a/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift @@ -60,7 +60,7 @@ extension UIView { } } - subviews.forEach { $0.isHidden = false} + subviews.forEach { $0.isHidden = false } } public func startAnimation() { @@ -84,7 +84,7 @@ extension UIView { var subviewSkeletonLayers = [SkeletonLayer]() if view.isSkeletonsContainer { - if conf.borderWidth != .zero { + if !conf.isContainersHidden { skeletonLayer.bind(to: .container(view)) } diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift index fb8e5596..f7d7b032 100644 --- a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift @@ -151,7 +151,7 @@ class CustomConfigurableSkeletonableView: UIView, SkeletonsPresenter { - `UITextView` - `UIImageView` - > Для контейнеров доступна только настройка `borderWidth`, а `borderColor` используется тот же, что и для других скелетонов + > Для контейнеров в качестве `borderColor` используется тот же цвет, что и для других скелетонов ### Анимация @@ -220,6 +220,14 @@ var confWithLabelSettings: SkeletonsConfiguration { return .init(labelConfiguration: labelConf) } +//: Для контейнеров можно настроить `borderWidth`. Стандартно он равняется 0, а значит контейнеры не будут показываться без дополнительной настройки ширины. +var skeletonsConfiguration: SkeletonsConfiguration { + let containerConf = ContainerViewSkeletonsConfiguration(borderWidth: 4, + shape: .rectangle(cornerRadius: 10)) + + return .init(containerViewConfiguration: containerConf) +} + /*: ### Отступы diff --git a/docs/tiuielements/skeletons.md b/docs/tiuielements/skeletons.md index 41da669d..71f55665 100644 --- a/docs/tiuielements/skeletons.md +++ b/docs/tiuielements/skeletons.md @@ -157,7 +157,7 @@ class CustomConfigurableSkeletonableView: UIView, SkeletonsPresenter { - `UITextView` - `UIImageView` - > Для контейнеров доступна только настройка `borderWidth`, а `borderColor` используется тот же, что и для других скелетонов + > Для контейнеров в качестве `borderColor` используется тот же цвет, что и для других скелетонов ### Анимация @@ -233,6 +233,17 @@ var confWithLabelSettings: SkeletonsConfiguration { } ``` +Для контейнеров можно настроить `borderWidth`. Стандартно он равняется 0, а значит контейнеры не будут показываться без дополнительной настройки ширины. + +```swift +var skeletonsConfiguration: SkeletonsConfiguration { + let containerConf = ContainerViewSkeletonsConfiguration(borderWidth: 4, + shape: .rectangle(cornerRadius: 10)) + + return .init(containerViewConfiguration: containerConf) +} +``` + ### Отступы Отступы можно настроить отдельно для `UILabel`, `UITextView`, `UIImageView` и остальных вью. Например, для предыдущего примера можно добавить горизонтальный _padding_ для лейбла: From 597755474c8cdf1b9ae43be141c43549051a0e58 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Thu, 9 Mar 2023 12:49:56 +0300 Subject: [PATCH 20/25] fix: url to source in podspecs --- TIAuth/TIAuth.podspec | 4 ++-- TIDeveloperUtils/TIDeveloperUtils.podspec | 4 ++-- TIEcommerce/TIEcommerce.podspec | 4 ++-- TIFoundationUtils/TIFoundationUtils.podspec | 4 ++-- TIGoogleMapUtils/TIGoogleMapUtils.podspec | 4 ++-- TIKeychainUtils/TIKeychainUtils.podspec | 4 ++-- TIMapUtils/TIMapUtils.podspec | 4 ++-- TIMoyaNetworking/TIMoyaNetworking.podspec | 4 ++-- TINetworking/TINetworking.podspec | 4 ++-- TINetworkingCache/TINetworkingCache.podspec | 4 ++-- TIPagination/TIPagination.podspec | 4 ++-- TISwiftUICore/TISwiftUICore.podspec | 4 ++-- TISwiftUtils/TISwiftUtils.podspec | 4 ++-- TITableKitUtils/TITableKitUtils.podspec | 4 ++-- TIUIElements/TIUIElements.podspec | 4 ++-- TIUIKitCore/TIUIKitCore.podspec | 4 ++-- TIWebView/TIWebView.podspec | 4 ++-- TIYandexMapUtils/TIYandexMapUtils.podspec | 4 ++-- 18 files changed, 36 insertions(+), 36 deletions(-) diff --git a/TIAuth/TIAuth.podspec b/TIAuth/TIAuth.podspec index 01745b46..415325cd 100644 --- a/TIAuth/TIAuth.podspec +++ b/TIAuth/TIAuth.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = 'TIAuth' s.version = '1.37.0' s.summary = 'Login, registration, confirmation and other related actions' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '13.0' s.swift_versions = ['5.3'] diff --git a/TIDeveloperUtils/TIDeveloperUtils.podspec b/TIDeveloperUtils/TIDeveloperUtils.podspec index 0f6f94c0..bd91d3c8 100644 --- a/TIDeveloperUtils/TIDeveloperUtils.podspec +++ b/TIDeveloperUtils/TIDeveloperUtils.podspec @@ -2,11 +2,11 @@ Pod::Spec.new do |s| s.name = 'TIDeveloperUtils' s.version = '1.37.0' s.summary = 'Universal web view API' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru', 'castlele' => 'nikita.semenov@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '11.0' s.swift_versions = ['5.3'] diff --git a/TIEcommerce/TIEcommerce.podspec b/TIEcommerce/TIEcommerce.podspec index 854e0ad7..21336cc2 100644 --- a/TIEcommerce/TIEcommerce.podspec +++ b/TIEcommerce/TIEcommerce.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = 'TIEcommerce' s.version = '1.37.0' s.summary = 'Cart, products, promocodes, bonuses and other related actions' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '11.0' s.swift_versions = ['5.3'] diff --git a/TIFoundationUtils/TIFoundationUtils.podspec b/TIFoundationUtils/TIFoundationUtils.podspec index e3721de7..7f25292f 100644 --- a/TIFoundationUtils/TIFoundationUtils.podspec +++ b/TIFoundationUtils/TIFoundationUtils.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = 'TIFoundationUtils' s.version = '1.37.0' s.summary = 'Set of helpers for Foundation framework classes.' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '10.0' s.swift_versions = ['5.3'] diff --git a/TIGoogleMapUtils/TIGoogleMapUtils.podspec b/TIGoogleMapUtils/TIGoogleMapUtils.podspec index 0f5c3c6d..fc510d03 100644 --- a/TIGoogleMapUtils/TIGoogleMapUtils.podspec +++ b/TIGoogleMapUtils/TIGoogleMapUtils.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = 'TIGoogleMapUtils' s.version = '1.37.0' s.summary = 'Set of helpers for map objects clustering and interacting using Google Maps SDK.' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '12.0' s.swift_versions = ['5.3'] diff --git a/TIKeychainUtils/TIKeychainUtils.podspec b/TIKeychainUtils/TIKeychainUtils.podspec index 97f19406..80691c2c 100644 --- a/TIKeychainUtils/TIKeychainUtils.podspec +++ b/TIKeychainUtils/TIKeychainUtils.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = 'TIKeychainUtils' s.version = '1.37.0' s.summary = 'Set of helpers for Keychain classes.' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '11.0' s.swift_versions = ['5.3'] diff --git a/TIMapUtils/TIMapUtils.podspec b/TIMapUtils/TIMapUtils.podspec index 40ca905f..eba549c6 100644 --- a/TIMapUtils/TIMapUtils.podspec +++ b/TIMapUtils/TIMapUtils.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = 'TIMapUtils' s.version = '1.37.0' s.summary = 'Set of helpers for map objects clustering and interacting.' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '10.0' s.swift_versions = ['5.3'] diff --git a/TIMoyaNetworking/TIMoyaNetworking.podspec b/TIMoyaNetworking/TIMoyaNetworking.podspec index 239184e5..c56d77dc 100644 --- a/TIMoyaNetworking/TIMoyaNetworking.podspec +++ b/TIMoyaNetworking/TIMoyaNetworking.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = 'TIMoyaNetworking' s.version = '1.37.0' s.summary = 'Moya + Swagger network service.' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '11.0' s.swift_versions = ['5.3'] diff --git a/TINetworking/TINetworking.podspec b/TINetworking/TINetworking.podspec index d1c1ef32..870958d9 100644 --- a/TINetworking/TINetworking.podspec +++ b/TINetworking/TINetworking.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = 'TINetworking' s.version = '1.37.0' s.summary = 'Swagger-frendly networking layer helpers.' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '10.0' s.swift_versions = ['5.3'] diff --git a/TINetworkingCache/TINetworkingCache.podspec b/TINetworkingCache/TINetworkingCache.podspec index 64831b1f..10383fda 100644 --- a/TINetworkingCache/TINetworkingCache.podspec +++ b/TINetworkingCache/TINetworkingCache.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = 'TINetworkingCache' s.version = '1.37.0' s.summary = 'Caching results of EndpointRequests.' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '11.0' s.swift_versions = ['5.3'] diff --git a/TIPagination/TIPagination.podspec b/TIPagination/TIPagination.podspec index 3ee3bb66..bdda3f9c 100644 --- a/TIPagination/TIPagination.podspec +++ b/TIPagination/TIPagination.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = 'TIPagination' s.version = '1.37.0' s.summary = 'Generic pagination component.' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '10.0' s.swift_versions = ['5.3'] diff --git a/TISwiftUICore/TISwiftUICore.podspec b/TISwiftUICore/TISwiftUICore.podspec index be59b9b8..b0a984b4 100644 --- a/TISwiftUICore/TISwiftUICore.podspec +++ b/TISwiftUICore/TISwiftUICore.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = 'TISwiftUICore' s.version = '1.37.0' s.summary = 'Core UI elements: protocols, views and helpers.' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '13.0' s.swift_versions = ['5.3'] diff --git a/TISwiftUtils/TISwiftUtils.podspec b/TISwiftUtils/TISwiftUtils.podspec index ab75d35d..d12eeb26 100644 --- a/TISwiftUtils/TISwiftUtils.podspec +++ b/TISwiftUtils/TISwiftUtils.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = 'TISwiftUtils' s.version = '1.37.0' s.summary = 'Bunch of useful helpers for Swift development.' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '9.0' s.swift_versions = ['5.3'] diff --git a/TITableKitUtils/TITableKitUtils.podspec b/TITableKitUtils/TITableKitUtils.podspec index d0938b2e..173f0d89 100644 --- a/TITableKitUtils/TITableKitUtils.podspec +++ b/TITableKitUtils/TITableKitUtils.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = 'TITableKitUtils' s.version = '1.37.0' s.summary = 'Set of helpers for TableKit classes.' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '11.0' s.swift_versions = ['5.3'] diff --git a/TIUIElements/TIUIElements.podspec b/TIUIElements/TIUIElements.podspec index 60c2bc98..f5d6fc39 100644 --- a/TIUIElements/TIUIElements.podspec +++ b/TIUIElements/TIUIElements.podspec @@ -2,11 +2,11 @@ Pod::Spec.new do |s| s.name = 'TIUIElements' s.version = '1.37.0' s.summary = 'Bunch of useful protocols and views.' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru', 'castlele' => 'nikita.semenov@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '11.0' s.swift_versions = ['5.3'] diff --git a/TIUIKitCore/TIUIKitCore.podspec b/TIUIKitCore/TIUIKitCore.podspec index e68a1d70..53294516 100644 --- a/TIUIKitCore/TIUIKitCore.podspec +++ b/TIUIKitCore/TIUIKitCore.podspec @@ -2,11 +2,11 @@ Pod::Spec.new do |s| s.name = 'TIUIKitCore' s.version = '1.37.0' s.summary = 'Core UI elements: protocols, views and helpers.' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru', 'castlele' => 'nikita.semenov@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '11.0' s.swift_versions = ['5.3'] diff --git a/TIWebView/TIWebView.podspec b/TIWebView/TIWebView.podspec index 269c97dc..3133b457 100644 --- a/TIWebView/TIWebView.podspec +++ b/TIWebView/TIWebView.podspec @@ -2,11 +2,11 @@ Pod::Spec.new do |s| s.name = 'TIWebView' s.version = '1.37.0' s.summary = 'Universal web view API' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru', 'castlele' => 'nikita.semenov@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '11.0' s.swift_versions = ['5.3'] diff --git a/TIYandexMapUtils/TIYandexMapUtils.podspec b/TIYandexMapUtils/TIYandexMapUtils.podspec index f53a2d90..b680a945 100644 --- a/TIYandexMapUtils/TIYandexMapUtils.podspec +++ b/TIYandexMapUtils/TIYandexMapUtils.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = 'TIYandexMapUtils' s.version = '1.37.0' s.summary = 'Set of helpers for map objects clustering and interacting using Yandex Maps SDK.' - s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name + s.homepage = 'https://gitlab.ti/touchinstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'petropavel13' => 'ivan.smolin@touchin.ru' } - s.source = { :git => 'https://github.com/TouchInstinct/LeadKit.git', :tag => s.version.to_s } + s.source = { :git => 'https://gitlab.ti/touchinstinct/LeadKit.git', :tag => s.version.to_s } s.ios.deployment_target = '12.0' s.swift_versions = ['5.3'] From 19bb08aa6691d55235c642a7c6f1daca88fdebe7 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Thu, 9 Mar 2023 17:49:37 +0300 Subject: [PATCH 21/25] feat: added new sys of hidding views below the skeletons --- .../SkeletonsConfiguration.swift | 7 +++++ .../Skeletons/Helpers/CGRect+Padding.swift | 4 +-- .../Views/Skeletons/SkeletonLayer.swift | 31 ++++++++++++++++--- .../UIView+PresentingSkeletons.swift | 19 ++++++++---- .../Skeletons.xcplaygroundpage/Contents.swift | 3 ++ docs/tiuielements/skeletons.md | 6 ++++ 6 files changed, 57 insertions(+), 13 deletions(-) diff --git a/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift b/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift index 0e8f449b..c46c8e62 100644 --- a/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift +++ b/TIUIElements/Sources/Views/Skeletons/Configuration/SkeletonsConfiguration.swift @@ -31,6 +31,7 @@ open class SkeletonsConfiguration { public var imageViewConfiguration: BaseViewSkeletonsConfiguration public var animation: Closure? + public var baseSkeletonBackgroundColor: CGColor? public var skeletonsBackgroundColor: CGColor public var skeletonsMovingColor: CGColor @@ -47,6 +48,7 @@ open class SkeletonsConfiguration { labelConfiguration: TextSkeletonsConfiguration = .init(), imageViewConfiguration: BaseViewSkeletonsConfiguration = .init(shape: .circle), animation: Closure? = nil, + baseSkeletonBackgroundColor: UIColor? = nil, skeletonsBackgroundColor: UIColor = .lightGray.withAlphaComponent(0.7), configurationDelegate: SkeletonsConfigurationDelegate? = nil) { @@ -55,6 +57,7 @@ open class SkeletonsConfiguration { self.labelConfiguration = labelConfiguration self.imageViewConfiguration = imageViewConfiguration self.animation = animation + self.baseSkeletonBackgroundColor = baseSkeletonBackgroundColor?.cgColor self.skeletonsBackgroundColor = skeletonsBackgroundColor.cgColor self.skeletonsMovingColor = skeletonsBackgroundColor.withAlphaComponent(0.2).cgColor self.configurationDelegate = configurationDelegate @@ -70,6 +73,10 @@ open class SkeletonsConfiguration { layer.fillColor = skeletonsBackgroundColor } + open func configureBaseViewAppearance(layer: SkeletonLayer, view: UIView) { + layer.fillColor = baseSkeletonBackgroundColor ?? view.backgroundColor?.cgColor + } + open func configureContainerAppearance(layer: SkeletonLayer) { layer.fillColor = UIColor.clear.cgColor diff --git a/TIUIElements/Sources/Views/Skeletons/Helpers/CGRect+Padding.swift b/TIUIElements/Sources/Views/Skeletons/Helpers/CGRect+Padding.swift index 5472f5d5..f6a585c5 100644 --- a/TIUIElements/Sources/Views/Skeletons/Helpers/CGRect+Padding.swift +++ b/TIUIElements/Sources/Views/Skeletons/Helpers/CGRect+Padding.swift @@ -26,8 +26,8 @@ extension CGRect { func with(padding: UIEdgeInsets) -> CGRect { CGRect(x: minX + padding.left, y: minY + padding.top, - width: width - padding.right, - height: height - padding.bottom) + width: width, + height: height) } func reduceSize(byPadding p: UIEdgeInsets) -> CGRect { diff --git a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift index 6e339243..d645dc21 100644 --- a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift +++ b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift @@ -31,6 +31,7 @@ open class SkeletonLayer: CAShapeLayer { } public enum ViewType { + case base(UIView) case generic(UIView) case container(UIView) case label(UILabel) @@ -53,6 +54,9 @@ open class SkeletonLayer: CAShapeLayer { case let .generic(view): return view + + case let .base(view): + return view } } } @@ -140,6 +144,9 @@ open class SkeletonLayer: CAShapeLayer { case .container(_): configuration.configureContainerAppearance(layer: self) + case .base(_): + configuration.configureBaseViewAppearance(layer: self, view: type.view) + default: configuration.configureAppearance(layer: self) } @@ -153,23 +160,37 @@ open class SkeletonLayer: CAShapeLayer { switch viewType { case let .textView(textView): path = configuration.labelConfiguration.configureTextViewPath(textView: textView) - frame = configuration.labelConfiguration.applyPadding(viewFrame: rect) + + let viewFrame = CGRect(origin: rect.origin, size: path?.boundingBox.size ?? rect.size) + frame = configuration.labelConfiguration.applyPadding(viewFrame: viewFrame) case let .label(label): path = configuration.labelConfiguration.configureLabelPath(label: label) - frame = configuration.labelConfiguration.applyPadding(viewFrame: rect) + + let viewFrame = CGRect(origin: rect.origin, size: path?.boundingBox.size ?? rect.size) + frame = configuration.labelConfiguration.applyPadding(viewFrame: viewFrame) case .imageView(_): path = configuration.imageViewConfiguration.drawPath(rect: viewType.view.bounds) - frame = configuration.imageViewConfiguration.applyPadding(viewFrame: rect) + + let viewFrame = CGRect(origin: rect.origin, size: path?.boundingBox.size ?? rect.size) + frame = configuration.imageViewConfiguration.applyPadding(viewFrame: viewFrame) case .container(_): path = configuration.containerViewConfiguration.drawPath(rect: viewType.view.bounds) - frame = configuration.containerViewConfiguration.applyPadding(viewFrame: rect) + + let viewFrame = CGRect(origin: rect.origin, size: path?.boundingBox.size ?? rect.size) + frame = configuration.containerViewConfiguration.applyPadding(viewFrame: viewFrame) case .generic(_): path = configuration.viewConfiguration.drawPath(rect: viewType.view.bounds) - frame = configuration.viewConfiguration.applyPadding(viewFrame: rect) + + let viewFrame = CGRect(origin: rect.origin, size: path?.boundingBox.size ?? rect.size) + frame = configuration.viewConfiguration.applyPadding(viewFrame: viewFrame) + + default: + path = UIBezierPath(roundedRect: rect, cornerRadius: 20).cgPath + frame = rect } animationLayer.frame = bounds diff --git a/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift index 9900ece8..4eaedd38 100644 --- a/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift @@ -20,6 +20,7 @@ // THE SOFTWARE. // +import TISwiftUtils import UIKit extension UIView { @@ -37,7 +38,7 @@ extension UIView { let viewsToSkeletone = viewsToSkeletone ?? skeletonableViews isUserInteractionEnabled = false - subviews.forEach { $0.isHidden = true } + configureBaseLayer(withConfiguration: config) viewsToSkeletone .flatMap { view in @@ -59,8 +60,6 @@ extension UIView { layer.remove(from: self) } } - - subviews.forEach { $0.isHidden = false } } public func startAnimation() { @@ -78,18 +77,19 @@ extension UIView { // MARK: - Private methods private func getSkeletonLayer(forView view: UIView, - withConfiguration conf: SkeletonsConfiguration) -> [SkeletonLayer] { + withConfiguration conf: SkeletonsConfiguration, + forceNoContainers: Bool = false) -> [SkeletonLayer] { let skeletonLayer = conf.createSkeletonLayer(for: self) var subviewSkeletonLayers = [SkeletonLayer]() if view.isSkeletonsContainer { - if !conf.isContainersHidden { + if !conf.isContainersHidden, !forceNoContainers { skeletonLayer.bind(to: .container(view)) } subviewSkeletonLayers = view.skeletonableViews - .map { getSkeletonLayer(forView: $0, withConfiguration: conf) } + .map { getSkeletonLayer(forView: $0, withConfiguration: conf, forceNoContainers: true) } .flatMap { $0 } } else { @@ -98,6 +98,13 @@ extension UIView { return [skeletonLayer] + subviewSkeletonLayers } + + private func configureBaseLayer(withConfiguration conf: SkeletonsConfiguration) { + let skeletonLayer = conf.createSkeletonLayer(for: self) + + skeletonLayer.bind(to: .base(self)) + layer.insertSublayer(skeletonLayer, at: .max) + } } // MARK: - Helper extension diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift index f7d7b032..fffb4049 100644 --- a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift @@ -189,6 +189,9 @@ let confWithTopToBottomAnim = SkeletonsConfiguration(animation: { _ in */ let confWithRedBackgroundColor = SkeletonsConfiguration(skeletonsBackgroundColor: .red) +//: Для скрытия view от пользователя скелетонами накладывается специальный CALayer, чей цвет заполнения равен backgroundColor view, с которой были запущены скелетоны. Однако этот цвет можно переопределить переопределить с помощью параметра `baseSkeletonBackgroundColor` +let confWithRedBaseBackgroundColor = SkeletonsConfiguration(baseSkeletonBackgroundColor: .red) + /*: ### Форма diff --git a/docs/tiuielements/skeletons.md b/docs/tiuielements/skeletons.md index 71f55665..3d6fd882 100644 --- a/docs/tiuielements/skeletons.md +++ b/docs/tiuielements/skeletons.md @@ -198,6 +198,12 @@ let confWithTopToBottomAnim = SkeletonsConfiguration(animation: { _ in let confWithRedBackgroundColor = SkeletonsConfiguration(skeletonsBackgroundColor: .red) ``` +Для скрытия view от пользователя скелетонами накладывается специальный CALayer, чей цвет заполнения равен backgroundColor view, с которой были запущены скелетоны. Однако этот цвет можно переопределить переопределить с помощью параметра `baseSkeletonBackgroundColor` + +```swift +let confWithRedBaseBackgroundColor = SkeletonsConfiguration(baseSkeletonBackgroundColor: .red) +``` + ### Форма Форму можно настраивать отдельно для `UILabel`, `UITextView`, `UIImageView` и остальных вью. Например, картинки можно сделать круглыми, а лейблы прямоугольные с закругленными краями: From 2250b1b4d96147e299a01eaf587f3c8efeb30ed7 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Thu, 9 Mar 2023 20:51:25 +0300 Subject: [PATCH 22/25] fix: code review notes --- .../Skeletons/Helpers/UIView+Skeletons.swift | 20 +++---- .../Views/Skeletons/SkeletonLayer.swift | 52 +++++++++---------- .../UIView+PresentingSkeletons.swift | 4 +- 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift index 85803073..2612a36b 100644 --- a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift @@ -75,10 +75,10 @@ extension UIView { return .imageView(imageView) } else if self.isSkeletonsContainer { - return .container(self) + return .parentView(self) } else { - return .generic(self) + return .anyFinalView(self) } } @@ -86,23 +86,23 @@ extension UIView { attributedText: NSAttributedString?, font: UIFont?, textAlignment: NSTextAlignment) -> Bool { - let _text: String - let _font: UIFont + let finalText: String + let finalFont: UIFont if let attributedText = attributedText, let maxFont = attributedText.getMaxFont() { - _text = attributedText.string - _font = maxFont + finalText = attributedText.string + finalFont = maxFont } else if let text = text, let font = font { - _text = text - _font = font + finalText = text + finalFont = font } else { return false } - let textAttributes = BaseTextAttributes(font: _font, color: .black, alignment: textAlignment, isMultiline: true) - let labelTextSize = textAttributes.size(of: _text, with: .zero) + let textAttributes = BaseTextAttributes(font: finalFont, color: .black, alignment: textAlignment, isMultiline: true) + let labelTextSize = textAttributes.size(of: finalText, with: .zero) return labelTextSize.width > bounds.width } diff --git a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift index d645dc21..46f0c91d 100644 --- a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift +++ b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift @@ -31,19 +31,19 @@ open class SkeletonLayer: CAShapeLayer { } public enum ViewType { - case base(UIView) - case generic(UIView) - case container(UIView) - case label(UILabel) - case textView(UITextView) + case skeletonsHolderView(UIView) + case parentView(UIView) case imageView(UIImageView) + case textView(UITextView) + case label(UILabel) + case anyFinalView(UIView) public var view: UIView { switch self { case let .imageView(imageView): return imageView - case let .container(containerView): + case let .parentView(containerView): return containerView case let .label(labelView): @@ -52,10 +52,10 @@ open class SkeletonLayer: CAShapeLayer { case let .textView(textView): return textView - case let .generic(view): + case let .anyFinalView(view): return view - case let .base(view): + case let .skeletonsHolderView(view): return view } } @@ -63,8 +63,10 @@ open class SkeletonLayer: CAShapeLayer { private var animationLayer = CAGradientLayer() private var viewBoundsObservation: NSKeyValueObservation? + private var applicationStateObservation: NSObjectProtocol? public var configuration: SkeletonsConfiguration + public var isSkeletonsHolder: Bool = false public weak var baseView: UIView? public var isAnimating: Bool { @@ -93,10 +95,6 @@ open class SkeletonLayer: CAShapeLayer { super.init(coder: coder) } - deinit { - NotificationCenter.default.removeObserver(self) - } - // MARK: - Open methods open func bind(to viewType: ViewType) { @@ -108,10 +106,13 @@ open class SkeletonLayer: CAShapeLayer { } if let _ = configuration.animation?(self) { - NotificationCenter.default.addObserver(self, - selector: #selector(SkeletonLayer.restartAnimationIfNeeded), - name: UIApplication.willEnterForegroundNotification, - object: nil) + applicationStateObservation = NotificationCenter.default + .addObserver(forName: UIApplication.willEnterForegroundNotification, + object: nil, + queue: .main) { [weak self] _ in + self?.stopAnimation() + self?.startAnimation() + } } configuration.configurationDelegate?.layerDidConfigured(forViewType: viewType, layer: self) @@ -121,10 +122,13 @@ open class SkeletonLayer: CAShapeLayer { stopAnimation() removeFromSuperlayer() viewBoundsObservation = nil + applicationStateObservation = nil } open func startAnimation() { - guard !isAnimating, let animation = configuration.animation?(self) else { + guard !isAnimating, + !isSkeletonsHolder, + let animation = configuration.animation?(self) else { return } @@ -141,10 +145,11 @@ open class SkeletonLayer: CAShapeLayer { private func configureAppearance(_ type: ViewType) { switch type { - case .container(_): + case .parentView(_): configuration.configureContainerAppearance(layer: self) - case .base(_): + case .skeletonsHolderView(_): + isSkeletonsHolder = true configuration.configureBaseViewAppearance(layer: self, view: type.view) default: @@ -176,13 +181,13 @@ open class SkeletonLayer: CAShapeLayer { let viewFrame = CGRect(origin: rect.origin, size: path?.boundingBox.size ?? rect.size) frame = configuration.imageViewConfiguration.applyPadding(viewFrame: viewFrame) - case .container(_): + case .parentView(_): path = configuration.containerViewConfiguration.drawPath(rect: viewType.view.bounds) let viewFrame = CGRect(origin: rect.origin, size: path?.boundingBox.size ?? rect.size) frame = configuration.containerViewConfiguration.applyPadding(viewFrame: viewFrame) - case .generic(_): + case .anyFinalView(_): path = configuration.viewConfiguration.drawPath(rect: viewType.view.bounds) let viewFrame = CGRect(origin: rect.origin, size: path?.boundingBox.size ?? rect.size) @@ -195,9 +200,4 @@ open class SkeletonLayer: CAShapeLayer { animationLayer.frame = bounds } - - @objc private func restartAnimationIfNeeded() { - stopAnimation() - startAnimation() - } } diff --git a/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift index 4eaedd38..039d21d1 100644 --- a/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift @@ -85,7 +85,7 @@ extension UIView { if view.isSkeletonsContainer { if !conf.isContainersHidden, !forceNoContainers { - skeletonLayer.bind(to: .container(view)) + skeletonLayer.bind(to: .parentView(view)) } subviewSkeletonLayers = view.skeletonableViews @@ -102,7 +102,7 @@ extension UIView { private func configureBaseLayer(withConfiguration conf: SkeletonsConfiguration) { let skeletonLayer = conf.createSkeletonLayer(for: self) - skeletonLayer.bind(to: .base(self)) + skeletonLayer.bind(to: .skeletonsHolderView(self)) layer.insertSublayer(skeletonLayer, at: .max) } } From 40aa2876d11da8fa08cc38c3700320ef283355fc Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Thu, 9 Mar 2023 22:01:45 +0300 Subject: [PATCH 23/25] fix: code review notes --- .../Views/Skeletons/Helpers/UIView+Skeletons.swift | 2 +- .../Sources/Views/Skeletons/SkeletonLayer.swift | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift index 2612a36b..5dfcd05a 100644 --- a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift @@ -78,7 +78,7 @@ extension UIView { return .parentView(self) } else { - return .anyFinalView(self) + return .leafView(self) } } diff --git a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift index 46f0c91d..dd293ed7 100644 --- a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift +++ b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift @@ -36,7 +36,7 @@ open class SkeletonLayer: CAShapeLayer { case imageView(UIImageView) case textView(UITextView) case label(UILabel) - case anyFinalView(UIView) + case leafView(UIView) public var view: UIView { switch self { @@ -52,7 +52,7 @@ open class SkeletonLayer: CAShapeLayer { case let .textView(textView): return textView - case let .anyFinalView(view): + case let .leafView(view): return view case let .skeletonsHolderView(view): @@ -121,8 +121,11 @@ open class SkeletonLayer: CAShapeLayer { open func remove(from view: UIView) { stopAnimation() removeFromSuperlayer() - viewBoundsObservation = nil - applicationStateObservation = nil + viewBoundsObservation?.invalidate() + + if let observation = applicationStateObservation { + NotificationCenter.default.removeObserver(observation) + } } open func startAnimation() { @@ -187,7 +190,7 @@ open class SkeletonLayer: CAShapeLayer { let viewFrame = CGRect(origin: rect.origin, size: path?.boundingBox.size ?? rect.size) frame = configuration.containerViewConfiguration.applyPadding(viewFrame: viewFrame) - case .anyFinalView(_): + case .leafView(_): path = configuration.viewConfiguration.drawPath(rect: viewType.view.bounds) let viewFrame = CGRect(origin: rect.origin, size: path?.boundingBox.size ?? rect.size) From 23c2cbaceae33539b601619d100e4b990b1eb6a0 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Sat, 11 Mar 2023 22:07:06 +0300 Subject: [PATCH 24/25] fix: code review notes --- .../Skeletons/Helpers/CGRect+Padding.swift | 6 ++-- .../Skeletons/Helpers/UIView+Skeletons.swift | 30 ++++++++++--------- .../Skeletons/Protocols/Skeletonable.swift | 2 +- .../SkeletonsConfigurationDelegate.swift | 2 +- .../Protocols/SkeletonsPresenter.swift | 8 ++--- .../Views/Skeletons/SkeletonLayer.swift | 2 +- .../UIView+PresentingSkeletons.swift | 25 +++++++--------- ...UIViewController+PresentingSkeletons.swift | 6 ++-- .../Skeletons.xcplaygroundpage/Contents.swift | 16 +++++----- docs/tiuielements/skeletons.md | 16 +++++----- 10 files changed, 55 insertions(+), 58 deletions(-) diff --git a/TIUIElements/Sources/Views/Skeletons/Helpers/CGRect+Padding.swift b/TIUIElements/Sources/Views/Skeletons/Helpers/CGRect+Padding.swift index f6a585c5..98702362 100644 --- a/TIUIElements/Sources/Views/Skeletons/Helpers/CGRect+Padding.swift +++ b/TIUIElements/Sources/Views/Skeletons/Helpers/CGRect+Padding.swift @@ -30,9 +30,9 @@ extension CGRect { height: height) } - func reduceSize(byPadding p: UIEdgeInsets) -> CGRect { - let reducedWidth = width - p.left - p.right - let reducedHeight = height - p.top - p.bottom + func reduceSize(byPadding padding: UIEdgeInsets) -> CGRect { + let reducedWidth = width - padding.left - padding.right + let reducedHeight = height - padding.top - padding.bottom let reducedSize = CGSize(width: reducedWidth, height: reducedHeight) return CGRect(origin: origin, size: reducedSize) diff --git a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift index 5dfcd05a..9582d4c1 100644 --- a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift @@ -50,7 +50,7 @@ extension UILabel { extension UIView { public var skeletonableViews: [UIView] { if let skeletonableView = self as? Skeletonable { - return skeletonableView.viewsToSkeletone + return skeletonableView.viewsToSkeletones } return subviews @@ -58,7 +58,7 @@ extension UIView { var isSkeletonsContainer: Bool { if let skeletonableView = self as? Skeletonable { - return !skeletonableView.viewsToSkeletone.isEmpty + return !skeletonableView.viewsToSkeletones.isEmpty } return !subviews.isEmpty @@ -67,19 +67,21 @@ extension UIView { var viewType: SkeletonLayer.ViewType { if let labelView = self as? UILabel { return .label(labelView) - - } else if let textView = self as? UITextView { - return .textView(textView) - - } else if let imageView = self as? UIImageView { - return .imageView(imageView) - - } else if self.isSkeletonsContainer { - return .parentView(self) - - } else { - return .leafView(self) } + + if let textView = self as? UITextView { + return .textView(textView) + } + + if let imageView = self as? UIImageView { + return .imageView(imageView) + } + + if self.isSkeletonsContainer { + return .parentView(self) + } + + return .leafView(self) } fileprivate func isMultiline(text: String?, diff --git a/TIUIElements/Sources/Views/Skeletons/Protocols/Skeletonable.swift b/TIUIElements/Sources/Views/Skeletons/Protocols/Skeletonable.swift index 8b8020b2..ce619890 100644 --- a/TIUIElements/Sources/Views/Skeletons/Protocols/Skeletonable.swift +++ b/TIUIElements/Sources/Views/Skeletons/Protocols/Skeletonable.swift @@ -23,5 +23,5 @@ import class UIKit.UIView public protocol Skeletonable { - var viewsToSkeletone: [UIView] { get } + var viewsToSkeletones: [UIView] { get } } diff --git a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsConfigurationDelegate.swift b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsConfigurationDelegate.swift index 7caf34fc..fbd1b9f8 100644 --- a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsConfigurationDelegate.swift +++ b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsConfigurationDelegate.swift @@ -21,5 +21,5 @@ // public protocol SkeletonsConfigurationDelegate: AnyObject { - func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) + func layerDidConfigured(_ layer: SkeletonLayer, forViewType type: SkeletonLayer.ViewType) } diff --git a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift index d225b6db..de8c4c9c 100644 --- a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift +++ b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift @@ -26,7 +26,7 @@ public protocol SkeletonsPresenter { var skeletonsHolder: UIView { get } var skeletonsConfiguration: SkeletonsConfiguration { get } var isSkeletonsHidden: Bool { get } - var viewsToSkeletone: [UIView] { get } + var viewsToSkeletones: [UIView] { get } func showSkeletons() func hideSkeletons() @@ -46,17 +46,17 @@ extension SkeletonsPresenter { isSkeletonsHidden(forView: skeletonsHolder) } - public var viewsToSkeletone: [UIView] { + public var viewsToSkeletones: [UIView] { skeletonsHolder.skeletonableViews } public func showSkeletons() { - skeletonsHolder.showSkeletons(viewsToSkeletone: viewsToSkeletone, + skeletonsHolder.showSkeletons(viewsToSkeletones: viewsToSkeletones, skeletonsConfiguration) } func isSkeletonsHidden(forView view: UIView) -> Bool { - (view.layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil + view.layer.skeletonLayers.isEmpty } } diff --git a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift index dd293ed7..758765ff 100644 --- a/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift +++ b/TIUIElements/Sources/Views/Skeletons/SkeletonLayer.swift @@ -115,7 +115,7 @@ open class SkeletonLayer: CAShapeLayer { } } - configuration.configurationDelegate?.layerDidConfigured(forViewType: viewType, layer: self) + configuration.configurationDelegate?.layerDidConfigured(self, forViewType: viewType) } open func remove(from view: UIView) { diff --git a/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift index 039d21d1..129113f3 100644 --- a/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift @@ -30,17 +30,17 @@ extension UIView { /// Shows skeletons on the view /// /// - Parameters: - /// - viewsToSkeletone: views that will be converted to skeletones. If nil was passed subviews will be converted to skeletons + /// - viewsToSkeletones: views that will be converted to skeletones. If nil was passed subviews will be converted to skeletons /// - config: configuration of the skeletons' layers - public func showSkeletons(viewsToSkeletone: [UIView]?, + public func showSkeletons(viewsToSkeletones: [UIView]?, _ config: SkeletonsConfiguration) { - let viewsToSkeletone = viewsToSkeletone ?? skeletonableViews + let viewsToSkeletones = viewsToSkeletones ?? skeletonableViews isUserInteractionEnabled = false configureBaseLayer(withConfiguration: config) - viewsToSkeletone + viewsToSkeletones .flatMap { view in getSkeletonLayer(forView: view, withConfiguration: config) } @@ -55,23 +55,18 @@ extension UIView { public func hideSkeletons() { isUserInteractionEnabled = true - layer.sublayers?.forEach { layer in - if let layer = layer as? SkeletonLayer { - layer.remove(from: self) - } - } + layer.skeletonLayers + .forEach { $0.remove(from: self) } } public func startAnimation() { - layer.skeletonLayers.forEach { layer in - layer.startAnimation() - } + layer.skeletonLayers + .forEach { $0.startAnimation() } } public func stopAnimation() { - layer.skeletonLayers.forEach { layer in - layer.stopAnimation() - } + layer.skeletonLayers + .forEach { $0.stopAnimation() } } // MARK: - Private methods diff --git a/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift b/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift index 3af38aa4..3402d013 100644 --- a/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift @@ -27,12 +27,12 @@ extension UIViewController { /// Shows skeletons /// /// - Parameters: - /// - viewsToSkeletone: views that will be converted to skeletones. If nil was passed subviews of the view will be converted to skeletons + /// - viewsToSkeletones: views that will be converted to skeletones. If nil was passed subviews of the view will be converted to skeletons /// - config: configuration of the skeletons' layers - public func showSkeletons(viewsToSkeletone: [UIView]?, + public func showSkeletons(viewsToSkeletones: [UIView]?, _ config: SkeletonsConfiguration) { - view.showSkeletons(viewsToSkeletone: viewsToSkeletone, config) + view.showSkeletons(viewsToSkeletones: viewsToSkeletones, config) } public func hideSkeletons() { diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift index fffb4049..8ddbc2a4 100644 --- a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift @@ -15,9 +15,9 @@ ## Как начать пользоваться Базовая настройка для показа скелетонов не требуется. `UIView` и `UIViewController` уже имеют все необходимые методы для работы: - - `showSkeletons(viewsToSkeletone:_:)` : используется для показа скелетонов, если была передана конфигурация анимации, то она запустится автоматически. `viewsToSkeletone` - опциональный массив `UIView`, определяющий, какие вью будут конвертироваться в скелетоны. Если nil, то проход будет осуществляться по списку subview + - `showSkeletons(viewsToSkeletones:_:)` : используется для показа скелетонов, если была передана конфигурация анимации, то она запустится автоматически. `viewsToSkeletones` - опциональный массив `UIView`, определяющий, какие вью будут конвертироваться в скелетоны. Если nil, то проход будет осуществляться по списку subview - `hideSkeletons()` : используется для скрытия скелетонов - - `startAnimation()` : используется для старта анимации на скелетонах (если анимания не была сконфигурирована в методе `showSkeletons(viewsToSkeletone:_:)` то ничего не произойдет) + - `startAnimation()` : используется для старта анимации на скелетонах (если анимания не была сконфигурирована в методе `showSkeletons(viewsToSkeletones:_:)` то ничего не произойдет) - `stopAnimation()` : используется для остановки анимации на скелетонах */ import TIUIKitCore @@ -86,8 +86,8 @@ class CanShowAndHideSkeletons: BaseInitializableViewController { } @objc private func toggleSkeletons() { - // Т.к. передается nil, скелетонится будут все subview (в данном случае view.subview == [button, label, imageView]) - showSkeletons(viewsToSkeletone: nil, .init()) + // Т.к. передается nil, скелетониться будут все subview (в данном случае view.subview == [button, label, imageView]) + showSkeletons(viewsToSkeletones: nil, .init()) DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) { [weak self] in self?.hideSkeletons() @@ -101,7 +101,7 @@ class CanShowAndHideSkeletons: BaseInitializableViewController { Если необходимо изменить список конвертируемых в скелетоны view у какой-нибудь из отдельных view в иерархии, можно подписать его под протокол `Skeletonable` */ extension UITableViewCell: Skeletonable { - public var viewsToSkeletone: [UIView] { + public var viewsToSkeletones: [UIView] { contentView.subviews } } @@ -251,12 +251,12 @@ var confWithPadding: SkeletonsConfiguration { ```swift public protocol SkeletonsConfigurationDelegate: AnyObject { - func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) + func layerDidConfigured(_ layer: SkeletonLayer, forViewType type: SkeletonLayer.ViewType) } ``` */ class SkeletonsConfDelegate: SkeletonsConfigurationDelegate { - func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) { + func layerDidConfigured(_ layer: SkeletonLayer, forViewType type: SkeletonLayer.ViewType) { if case .imageView(_) = type { layer.frame = .init(x: layer.frame.minX - 20, y: layer.frame.minY - 20, @@ -312,4 +312,4 @@ confWithLeftToRightAnim.labelConfiguration = .init(numberOfLines: 2) PlaygroundPage.current.liveView = canShowAndHideController -canShowAndHideController.showSkeletons(viewsToSkeletone: nil, confWithLeftToRightAnim) +canShowAndHideController.showSkeletons(viewsToSkeletones: nil, confWithLeftToRightAnim) diff --git a/docs/tiuielements/skeletons.md b/docs/tiuielements/skeletons.md index 3d6fd882..e79e6152 100644 --- a/docs/tiuielements/skeletons.md +++ b/docs/tiuielements/skeletons.md @@ -15,9 +15,9 @@ ## Как начать пользоваться Базовая настройка для показа скелетонов не требуется. `UIView` и `UIViewController` уже имеют все необходимые методы для работы: - - `showSkeletons(viewsToSkeletone:_:)` : используется для показа скелетонов, если была передана конфигурация анимации, то она запустится автоматически. `viewsToSkeletone` - опциональный массив `UIView`, определяющий, какие вью будут конвертироваться в скелетоны. Если nil, то проход будет осуществляться по списку subview + - `showSkeletons(viewsToSkeletones:_:)` : используется для показа скелетонов, если была передана конфигурация анимации, то она запустится автоматически. `viewsToSkeletones` - опциональный массив `UIView`, определяющий, какие вью будут конвертироваться в скелетоны. Если nil, то проход будет осуществляться по списку subview - `hideSkeletons()` : используется для скрытия скелетонов - - `startAnimation()` : используется для старта анимации на скелетонах (если анимания не была сконфигурирована в методе `showSkeletons(viewsToSkeletone:_:)` то ничего не произойдет) + - `startAnimation()` : используется для старта анимации на скелетонах (если анимания не была сконфигурирована в методе `showSkeletons(viewsToSkeletones:_:)` то ничего не произойдет) - `stopAnimation()` : используется для остановки анимации на скелетонах ```swift @@ -87,8 +87,8 @@ class CanShowAndHideSkeletons: BaseInitializableViewController { } @objc private func toggleSkeletons() { - // Т.к. передается nil, скелетонится будут все subview (в данном случае view.subview == [button, label, imageView]) - showSkeletons(viewsToSkeletone: nil, .init()) + // Т.к. передается nil, скелетониться будут все subview (в данном случае view.subview == [button, label, imageView]) + showSkeletons(viewsToSkeletones: nil, .init()) DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) { [weak self] in self?.hideSkeletons() @@ -103,7 +103,7 @@ class CanShowAndHideSkeletons: BaseInitializableViewController { ```swift extension UITableViewCell: Skeletonable { - public var viewsToSkeletone: [UIView] { + public var viewsToSkeletones: [UIView] { contentView.subviews } } @@ -270,13 +270,13 @@ var confWithPadding: SkeletonsConfiguration { ```swift public protocol SkeletonsConfigurationDelegate: AnyObject { - func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) + func layerDidConfigured(_ layer: SkeletonLayer, forViewType type: SkeletonLayer.ViewType) } ``` ```swift class SkeletonsConfDelegate: SkeletonsConfigurationDelegate { - func layerDidConfigured(forViewType type: SkeletonLayer.ViewType, layer: SkeletonLayer) { + func layerDidConfigured(_ layer: SkeletonLayer, forViewType type: SkeletonLayer.ViewType) { if case .imageView(_) = type { layer.frame = .init(x: layer.frame.minX - 20, y: layer.frame.minY - 20, @@ -336,5 +336,5 @@ confWithLeftToRightAnim.labelConfiguration = .init(numberOfLines: 2) PlaygroundPage.current.liveView = canShowAndHideController -canShowAndHideController.showSkeletons(viewsToSkeletone: nil, confWithLeftToRightAnim) +canShowAndHideController.showSkeletons(viewsToSkeletones: nil, confWithLeftToRightAnim) ``` From e3ae781f1d944905a6f035287cb354d3002ef2cb Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Mon, 13 Mar 2023 10:42:17 +0300 Subject: [PATCH 25/25] fix: typo + small refactoring --- .../Views/Skeletons/Helpers/UIView+Skeletons.swift | 4 ++-- .../Views/Skeletons/Protocols/Skeletonable.swift | 2 +- .../Views/Skeletons/Protocols/SkeletonsPresenter.swift | 10 +++++----- .../Views/Skeletons/UIView+PresentingSkeletons.swift | 8 ++++---- .../UIViewController+PresentingSkeletons.swift | 6 +++--- .../Pages/Skeletons.xcplaygroundpage/Contents.swift | 10 +++++----- docs/tiuielements/skeletons.md | 10 +++++----- 7 files changed, 25 insertions(+), 25 deletions(-) diff --git a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift index 9582d4c1..fc8c98a5 100644 --- a/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/Helpers/UIView+Skeletons.swift @@ -50,7 +50,7 @@ extension UILabel { extension UIView { public var skeletonableViews: [UIView] { if let skeletonableView = self as? Skeletonable { - return skeletonableView.viewsToSkeletones + return skeletonableView.viewsToSkeletons } return subviews @@ -58,7 +58,7 @@ extension UIView { var isSkeletonsContainer: Bool { if let skeletonableView = self as? Skeletonable { - return !skeletonableView.viewsToSkeletones.isEmpty + return !skeletonableView.viewsToSkeletons.isEmpty } return !subviews.isEmpty diff --git a/TIUIElements/Sources/Views/Skeletons/Protocols/Skeletonable.swift b/TIUIElements/Sources/Views/Skeletons/Protocols/Skeletonable.swift index ce619890..4c5f2d9e 100644 --- a/TIUIElements/Sources/Views/Skeletons/Protocols/Skeletonable.swift +++ b/TIUIElements/Sources/Views/Skeletons/Protocols/Skeletonable.swift @@ -23,5 +23,5 @@ import class UIKit.UIView public protocol Skeletonable { - var viewsToSkeletones: [UIView] { get } + var viewsToSkeletons: [UIView] { get } } diff --git a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift index de8c4c9c..b9ca217d 100644 --- a/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift +++ b/TIUIElements/Sources/Views/Skeletons/Protocols/SkeletonsPresenter.swift @@ -25,8 +25,8 @@ import UIKit public protocol SkeletonsPresenter { var skeletonsHolder: UIView { get } var skeletonsConfiguration: SkeletonsConfiguration { get } - var isSkeletonsHidden: Bool { get } - var viewsToSkeletones: [UIView] { get } + var isSkeletonLayerHidden: Bool { get } + var viewsToSkeletons: [UIView] { get } func showSkeletons() func hideSkeletons() @@ -42,16 +42,16 @@ extension SkeletonsPresenter { SkeletonsConfiguration() } - public var isSkeletonsHidden: Bool { + public var isSkeletonLayerHidden: Bool { isSkeletonsHidden(forView: skeletonsHolder) } - public var viewsToSkeletones: [UIView] { + public var viewsToSkeletons: [UIView] { skeletonsHolder.skeletonableViews } public func showSkeletons() { - skeletonsHolder.showSkeletons(viewsToSkeletones: viewsToSkeletones, + skeletonsHolder.showSkeletons(viewsToSkeletons: viewsToSkeletons, skeletonsConfiguration) } diff --git a/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift index 129113f3..47f49706 100644 --- a/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/UIView+PresentingSkeletons.swift @@ -30,17 +30,17 @@ extension UIView { /// Shows skeletons on the view /// /// - Parameters: - /// - viewsToSkeletones: views that will be converted to skeletones. If nil was passed subviews will be converted to skeletons + /// - viewsToSkeletons: views that will be converted to skeletons. If nil was passed subviews will be converted to skeletons /// - config: configuration of the skeletons' layers - public func showSkeletons(viewsToSkeletones: [UIView]?, + public func showSkeletons(viewsToSkeletons: [UIView]?, _ config: SkeletonsConfiguration) { - let viewsToSkeletones = viewsToSkeletones ?? skeletonableViews + let viewsToSkeletons = viewsToSkeletons ?? skeletonableViews isUserInteractionEnabled = false configureBaseLayer(withConfiguration: config) - viewsToSkeletones + viewsToSkeletons .flatMap { view in getSkeletonLayer(forView: view, withConfiguration: config) } diff --git a/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift b/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift index 3402d013..5da4d039 100644 --- a/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift +++ b/TIUIElements/Sources/Views/Skeletons/UIViewController+PresentingSkeletons.swift @@ -27,12 +27,12 @@ extension UIViewController { /// Shows skeletons /// /// - Parameters: - /// - viewsToSkeletones: views that will be converted to skeletones. If nil was passed subviews of the view will be converted to skeletons + /// - viewsToSkeletons: views that will be converted to skeletons. If nil was passed subviews of the view will be converted to skeletons /// - config: configuration of the skeletons' layers - public func showSkeletons(viewsToSkeletones: [UIView]?, + public func showSkeletons(viewsToSkeletons: [UIView]?, _ config: SkeletonsConfiguration) { - view.showSkeletons(viewsToSkeletones: viewsToSkeletones, config) + view.showSkeletons(viewsToSkeletons: viewsToSkeletons, config) } public func hideSkeletons() { diff --git a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift index 8ddbc2a4..b8d42bfe 100644 --- a/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift +++ b/TIUIElements/TIUIElements.app/Contents/MacOS/TIUIElements.playground/Pages/Skeletons.xcplaygroundpage/Contents.swift @@ -15,9 +15,9 @@ ## Как начать пользоваться Базовая настройка для показа скелетонов не требуется. `UIView` и `UIViewController` уже имеют все необходимые методы для работы: - - `showSkeletons(viewsToSkeletones:_:)` : используется для показа скелетонов, если была передана конфигурация анимации, то она запустится автоматически. `viewsToSkeletones` - опциональный массив `UIView`, определяющий, какие вью будут конвертироваться в скелетоны. Если nil, то проход будет осуществляться по списку subview + - `showSkeletons(viewsToSkeletons:_:)` : используется для показа скелетонов, если была передана конфигурация анимации, то она запустится автоматически. `viewsToSkeletons` - опциональный массив `UIView`, определяющий, какие вью будут конвертироваться в скелетоны. Если nil, то проход будет осуществляться по списку subview - `hideSkeletons()` : используется для скрытия скелетонов - - `startAnimation()` : используется для старта анимации на скелетонах (если анимания не была сконфигурирована в методе `showSkeletons(viewsToSkeletones:_:)` то ничего не произойдет) + - `startAnimation()` : используется для старта анимации на скелетонах (если анимания не была сконфигурирована в методе `showSkeletons(viewsToSkeletons:_:)` то ничего не произойдет) - `stopAnimation()` : используется для остановки анимации на скелетонах */ import TIUIKitCore @@ -87,7 +87,7 @@ class CanShowAndHideSkeletons: BaseInitializableViewController { @objc private func toggleSkeletons() { // Т.к. передается nil, скелетониться будут все subview (в данном случае view.subview == [button, label, imageView]) - showSkeletons(viewsToSkeletones: nil, .init()) + showSkeletons(viewsToSkeletons: nil, .init()) DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) { [weak self] in self?.hideSkeletons() @@ -101,7 +101,7 @@ class CanShowAndHideSkeletons: BaseInitializableViewController { Если необходимо изменить список конвертируемых в скелетоны view у какой-нибудь из отдельных view в иерархии, можно подписать его под протокол `Skeletonable` */ extension UITableViewCell: Skeletonable { - public var viewsToSkeletones: [UIView] { + public var viewsToSkeletons: [UIView] { contentView.subviews } } @@ -312,4 +312,4 @@ confWithLeftToRightAnim.labelConfiguration = .init(numberOfLines: 2) PlaygroundPage.current.liveView = canShowAndHideController -canShowAndHideController.showSkeletons(viewsToSkeletones: nil, confWithLeftToRightAnim) +canShowAndHideController.showSkeletons(viewsToSkeletons: nil, confWithLeftToRightAnim) diff --git a/docs/tiuielements/skeletons.md b/docs/tiuielements/skeletons.md index e79e6152..13e66248 100644 --- a/docs/tiuielements/skeletons.md +++ b/docs/tiuielements/skeletons.md @@ -15,9 +15,9 @@ ## Как начать пользоваться Базовая настройка для показа скелетонов не требуется. `UIView` и `UIViewController` уже имеют все необходимые методы для работы: - - `showSkeletons(viewsToSkeletones:_:)` : используется для показа скелетонов, если была передана конфигурация анимации, то она запустится автоматически. `viewsToSkeletones` - опциональный массив `UIView`, определяющий, какие вью будут конвертироваться в скелетоны. Если nil, то проход будет осуществляться по списку subview + - `showSkeletons(viewsToSkeletons:_:)` : используется для показа скелетонов, если была передана конфигурация анимации, то она запустится автоматически. `viewsToSkeletons` - опциональный массив `UIView`, определяющий, какие вью будут конвертироваться в скелетоны. Если nil, то проход будет осуществляться по списку subview - `hideSkeletons()` : используется для скрытия скелетонов - - `startAnimation()` : используется для старта анимации на скелетонах (если анимания не была сконфигурирована в методе `showSkeletons(viewsToSkeletones:_:)` то ничего не произойдет) + - `startAnimation()` : используется для старта анимации на скелетонах (если анимания не была сконфигурирована в методе `showSkeletons(viewsToSkeletons:_:)` то ничего не произойдет) - `stopAnimation()` : используется для остановки анимации на скелетонах ```swift @@ -88,7 +88,7 @@ class CanShowAndHideSkeletons: BaseInitializableViewController { @objc private func toggleSkeletons() { // Т.к. передается nil, скелетониться будут все subview (в данном случае view.subview == [button, label, imageView]) - showSkeletons(viewsToSkeletones: nil, .init()) + showSkeletons(viewsToSkeletons: nil, .init()) DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) { [weak self] in self?.hideSkeletons() @@ -103,7 +103,7 @@ class CanShowAndHideSkeletons: BaseInitializableViewController { ```swift extension UITableViewCell: Skeletonable { - public var viewsToSkeletones: [UIView] { + public var viewsToSkeletons: [UIView] { contentView.subviews } } @@ -336,5 +336,5 @@ confWithLeftToRightAnim.labelConfiguration = .init(numberOfLines: 2) PlaygroundPage.current.liveView = canShowAndHideController -canShowAndHideController.showSkeletons(viewsToSkeletones: nil, confWithLeftToRightAnim) +canShowAndHideController.showSkeletons(viewsToSkeletons: nil, confWithLeftToRightAnim) ```