tvOS controls and extensions that add parallax effect to your application.

Overview

PGS Software

ParallaxView

Swift 5.0 CocoaPods Compatible Carthage Compatible SPM Compatible Platform License

Summary

Easy to use UIView, UICollectionViewCell with parallax effect and extensions to add this effect to any UIView. Rotate view using Apple TV remote. Works confusingly similar to tiles in the home screen of the Apple TV.

ParallaxView ParallaxView

ParallaxView

Open your storyboard or xib and drag and drop UIView control. Change custom class to ParallaxView in Identity inspector. You can also create control from code.

ParallaxCollectionViewCell

In Interface builder change collection view cell class to ParallaxCollectionViewCell or do it from code.

You can also create subclass of ParallaxCollectionViewCell insted of UICollectionViewCell and use it as normal collection view cell.

Extension

If ParallaxView and ParallaxCollectionViewCell don't fit to your needs you can use extension that can be used with any UIView. In many cases it can look like in this example:

override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
	coordinator.addCoordinatedAnimations({
		if context.nextFocusedView === yourCustomView {
			yourCustomView.addParallaxMotionEffects()
		}
		if context.previouslyFocusedView === yourCustomView {
			yourCustomView.removeParallaxMotionEffects()
		}
	}, completion: nil)
}

It is important to add and remove parallax effect inside the animation block to avoid the glitches. ParallaxView and ParallaxCollectionViewCell internally use the same methods. For more details look into example.

Customisation

The component is documented in code, also look into example for more details.

Documentation

Properties

ParallaxView and ParallaxCollectionViewCell have the same properties for customisation.

  • parallaxEffectOptions - using this property you can customize parallax effect.

    • parallaxMotionEffect - configure parallax effect (pan, angles, etc.)
    • subviewsParallaxMode - enum that allow you to configure parallax effect for subviews of the ParallaxView
    • shadowPanDeviation - maximal value of points that shadow of the ParallaxView will be moved during parallax effect
    • glowAlpha - configure alpha of the glow effect (if is equal to 0.0 then the glow effect will be not added)
    • parallaxSubviewsContainer - custom container view that will be usead to apply subviews parallax effect. By default it will be parallaxable view by itself.
    • glowContainerView - view that will be used as the container for the glow effect. You don't have to configure this because for ParallaxView it will be automatically created a subview for this purpose, while for ParallaxCollectionViewCell it will be used contentView of the cell. Also by default it is nil when you use extension (self will be used as the glow container but only if glowAlpha is bigger than 0.0). But if you want to, you can define custom view - look into example project for more details.
    • glowImageView - image view that will be used as the glow effect. ParallaxView framework provides default image that will be set.
  • glowPosition - (.top default) - allows to customize position of the glow effect related to the glowImageContainer. You can provide custom setup by creating GlowPosition instance.

  • parallaxViewActions - use properties of this property to change default behaviours of the parallax view. Internally both ParallaxView and ParallaxCollectionViewCell calls callbacks.

    • setupUnfocusedState - closure will be called in animation block when view should change its appearance to the focused state
    • setupFocusedState - closure will be called in animation block when view should change its appearance to the unfocused state
    • beforeBecomeFocusedAnimation - closure will be called before the animation to the focused change start
    • beforeResignFocusAnimation - closure will be called before the animation to the unfocused change start
    • becomeFocused - closure will be called when didFocusChange happened. In most cases default implementation should work
    • resignFocus - closure will be called when didFocusChange happened. In most cases default implementation should work.
    • animatePressIn - default implementation of the press begin animation
    • animatePressOut - default implementation of the press ended animation
  • cornerRadius - use this value insted of self.view.layer.cornerRadius. This will automatically correct radius for glow effect view if it is necessary

Requirements

Swift 5.0, tvOS 9.0

Installation

Add line to Podfile

# ...
target 'MyApp' do
  # your other pod
  # ...
  pod 'ParallaxView'
end
# ...

Add a line to Cartfile:

github "PGSSoft/ParallaxView"

Xcode 12 (Swift 5.3) required!

In Xcode:

Select File > Swift Packages > Add Package Dependency. Enter https://github.com/PGSSoft/ParallaxView

If you would like to check more details please visit the Apple's documentation

  • Manual

You can download the latest files from our Releases page. After doing so, drag ParallaxView.xcodeproj into your project in Xcode, and for your project target on General tab in Embedded Binaries section add ParallaxView.framework. Example project is configured the same way, so you have the crib sheet.

Usage

import ParallaxView

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/PGSSoft/ParallaxView.

License

The project is available as open source under the terms of the MIT License.

About

The project maintained by software development agency PGS Software. See our other open-source projects or contact us to develop your product.

Follow us

Twitter URL
Twitter Follow

Comments
  • subviewsParallaxMode not working properly in UICollectionViewCell

    subviewsParallaxMode not working properly in UICollectionViewCell

    I would like to achieve some subview parallax effect in my custom collection view cells (created in a xib file). I have a UIImageView covering all the cell's space, with some text on top. The cell is a ParallaxCollectionViewCell subclass, and I'd like to use .basedOnTag mode. This kind of behavior is currently not possible

    in public func addParallaxMotionEffects(with options: inout ParallaxEffectOptions) the interpolation causing the parallax effect is applied to all the (first level) subviews, but a collection view cell only has one subview (the content view). All my subviews are inside the system-defined content view, so the intended effect will never be able to work properly. I'd like to change the subviews property used at line 87 (and 120) of UIView+ParallaxEffect subviews .filter { $0 !== options.glowContainerView } .enumerated() .forEach { (index: Int, subview: UIView) in

    to something like this let subviews = (self as? ParallaxCollectionViewCell)?.contentView.subviews ?? self.subviews

    Does this make sense?

    opened by stefanomondino 5
  • Project not building on 10.2 - please update Swift version

    Project not building on 10.2 - please update Swift version

    Can't build the project on XCode 10.2

    :-1: SWIFT_VERSION '3.0' is unsupported, supported versions are: 4.0, 4.2, 5.0. (in target 'ParallaxView tvOS')
    
    opened by walsht 4
  • Only allow parallax vertically?

    Only allow parallax vertically?

    By default, your view allows the parallax effect in all directions. Our designer brought up the fact that, in a vertically scrolling list, Apple uses the parallax effect only when moving up and down as a hint to the user as to the scroll direction. Is there an easy way to achieve this?

    opened by taschmidt 3
  • Make glow effect centered by default on focused state

    Make glow effect centered by default on focused state

    Hi, I am trying to make the glow effect centered to the view by default on focused state like how Apple does it. Can you please help me how to achieve it with this framework. Thanks.

    opened by harimani 3
  • Fix exception when loading gloweffect asset

    Fix exception when loading gloweffect asset

    Defining the gloweffect asset as universal crashes on Xcode 9. This PR defines gloweffect asset as a tvOS asset.

    Backtrace:

    fatal error: Can't initialize gloweffect image: file /Users/dcordero/Sources/ParallaxView/Sources/Other/ParallaxEffectOptions.swift, line 59
    2017-06-07 09:54:56.024157-0700 ParallaxViewExample[52498:1230620] fatal error: Can't initialize gloweffect image: file /Users/dcordero/Sources/ParallaxView/Sources/Other/ParallaxEffectOptions.swift, line 59
    (lldb) bt
    * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
        frame #0: 0x000000010726d980 libswiftCore.dylib`function signature specialization <preserving fragile attribute, Arg[1] = Exploded> of Swift._assertionFailure(Swift.StaticString, Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 144
      * frame #1: 0x0000000104021d70 ParallaxView`static ParallaxEffectOptions.defaultGlowImageView(self=ParallaxView.ParallaxEffectOptions) at ParallaxEffectOptions.swift:59
        frame #2: 0x0000000104021f3f ParallaxView`ParallaxEffectOptions.init(parallaxSubviewsContainer=nil, glowContainerView=nil) at ParallaxEffectOptions.swift:33
        frame #3: 0x0000000104023d15 ParallaxView`ParallaxView.init(aDecoder=0x00007ff7b2852000) at ParallaxView.swift:14
        frame #4: 0x0000000104023fff ParallaxView`@objc ParallaxView.init(coder:) at ParallaxView.swift:0
        frame #5: 0x0000000103d09672 ParallaxViewExample`CustomParallaxView.init(aDecoder=0x00007ff7b2852000) at ViewController.swift:0
        frame #6: 0x0000000103d0971f ParallaxViewExample`@objc CustomParallaxView.init(coder:) at ViewController.swift:0
        frame #7: 0x0000000105755fa4 UIKit`-[UIClassSwapper initWithCoder:] + 246
        frame #8: 0x000000010597c318 UIKit`UINibDecoderDecodeObjectForValue + 693
        frame #9: 0x000000010597c058 UIKit`-[UINibDecoder decodeObjectForKey:] + 89
        frame #10: 0x0000000105755c70 UIKit`-[UIRuntimeConnection initWithCoder:] + 178
        frame #11: 0x000000010597c318 UIKit`UINibDecoderDecodeObjectForValue + 693
        frame #12: 0x000000010597c4b6 UIKit`UINibDecoderDecodeObjectForValue + 1107
        frame #13: 0x000000010597c058 UIKit`-[UINibDecoder decodeObjectForKey:] + 89
        frame #14: 0x0000000105754e6d UIKit`-[UINib instantiateWithOwner:options:] + 1262
        frame #15: 0x00000001054d6bee UIKit`-[UIViewController _loadViewFromNibNamed:bundle:] + 383
        frame #16: 0x00000001054d74f7 UIKit`-[UIViewController loadView] + 177
        frame #17: 0x00000001054d7846 UIKit`-[UIViewController loadViewIfRequired] + 195
        frame #18: 0x00000001054d80a3 UIKit`-[UIViewController view] + 27
        frame #19: 0x000000010553962d UIKit`-[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:] + 466
        frame #20: 0x0000000105538a05 UIKit`-[UITabBarController transitionFromViewController:toViewController:] + 59
        frame #21: 0x0000000105534a3e UIKit`-[UITabBarController _setSelectedViewController:] + 410
        frame #22: 0x000000010553480d UIKit`-[UITabBarController setSelectedViewController:] + 109
        frame #23: 0x0000000105410150 UIKit`+[UIView(Animation) performWithoutAnimation:] + 90
        frame #24: 0x000000010552e735 UIKit`-[UITabBarController _selectDefaultViewControllerIfNecessaryWithAppearanceTransitions:] + 512
        frame #25: 0x000000010552fd4a UIKit`-[UITabBarController viewWillAppear:] + 207
        frame #26: 0x00000001054dd7e8 UIKit`-[UIViewController _setViewAppearState:isAnimating:] + 444
        frame #27: 0x00000001054ddfe5 UIKit`-[UIViewController __viewWillAppear:] + 147
        frame #28: 0x00000001054df748 UIKit`-[UIViewController viewWillMoveToWindow:] + 507
        frame #29: 0x00000001054065ef UIKit`-[UIView(Hierarchy) _willMoveToWindow:withAncestorView:] + 657
        frame #30: 0x0000000105417760 UIKit`-[UIView(Internal) _addSubview:positioned:relativeTo:] + 440
        frame #31: 0x00000001053c40ee UIKit`-[UIWindow addRootViewControllerViewIfPossible] + 841
        frame #32: 0x00000001053c4511 UIKit`-[UIWindow _setHidden:forced:] + 294
        frame #33: 0x00000001053d6e17 UIKit`-[UIWindow makeKeyAndVisible] + 42
        frame #34: 0x000000010534f838 UIKit`-[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4711
        frame #35: 0x0000000105354c53 UIKit`-[UIApplication _runWithMainScene:transitionContext:completion:] + 1699
        frame #36: 0x00000001056a8f5b UIKit`__111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke + 111
        frame #37: 0x0000000105a1d5fb UIKit`+[_UICanvas _enqueuePostSettingUpdateTransactionBlock:] + 153
        frame #38: 0x00000001056a8e81 UIKit`-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] + 249
        frame #39: 0x00000001056a921d UIKit`-[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:] + 530
        frame #40: 0x0000000105f097be UIKit`__82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke + 259
        frame #41: 0x0000000105f0967a UIKit`-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] + 444
        frame #42: 0x0000000105c47287 UIKit`__125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke + 221
        frame #43: 0x0000000105e1a9fe UIKit`_performActionsWithDelayForTransitionContext + 100
        frame #44: 0x0000000105c4714a UIKit`-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] + 231
        frame #45: 0x0000000105a1cc58 UIKit`-[_UICanvas scene:didUpdateWithDiff:transitionContext:completion:] + 392
        frame #46: 0x000000010535351b UIKit`-[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 664
        frame #47: 0x000000010587ca31 UIKit`-[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 369
        frame #48: 0x000000010d1be628 FrontBoardServices`-[FBSSceneImpl _didCreateWithTransitionContext:completion:] + 338
        frame #49: 0x000000010d1c7085 FrontBoardServices`__56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2 + 235
        frame #50: 0x000000010d1f2853 FrontBoardServices`__FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24
        frame #51: 0x000000010d1f2509 FrontBoardServices`-[FBSSerialQueue _performNext] + 464
        frame #52: 0x000000010d1f2a78 FrontBoardServices`-[FBSSerialQueue _performNextFromRunLoopSource] + 45
        frame #53: 0x00000001085161d1 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
        frame #54: 0x00000001084fa9ef CoreFoundation`__CFRunLoopDoSources0 + 271
        frame #55: 0x00000001084f9f9f CoreFoundation`__CFRunLoopRun + 1039
        frame #56: 0x00000001084f9919 CoreFoundation`CFRunLoopRunSpecific + 409
        frame #57: 0x000000010ba649d7 GraphicsServices`GSEventRunModal + 62
        frame #58: 0x0000000105356727 UIKit`UIApplicationMain + 159
        frame #59: 0x0000000103d0c077 ParallaxViewExample`main at AppDelegate.swift:12
        frame #60: 0x0000000109706eb9 libdyld.dylib`start + 1
    (lldb)
    
    opened by dcordero 3
  • Weird shaking-effect when focusing ParallaxViews

    Weird shaking-effect when focusing ParallaxViews

    Hi there,

    im getting weird effects on the ParallaxViews on the element that is getting focused in any direction. When focusing element, it is shaking to left and right for a split second. Doesnt happen with the CollectionViewCells.

    Same on the example on "Any View" if you go from the label to the orange element.

    opened by MrNiceCat 1
  • Lock swipe directions

    Lock swipe directions

    Hi everybody. Thank you for this library, I really like it. Now I want to create buttons to play, buy and rent movie (the same way as it is in the movies iTunes application). As I can see for such buttons user can swipe to the left and to the right only. But now I see that ParallaxView handles all swipes and I don't know how to lock some swipe directions. Could you please help me? Thank you in advance.

    opened by RomanPodymov 1
  • Suggestion: canbecomefocused

    Suggestion: canbecomefocused

    working with collectionView, sometimes you want the collectionViewDelegate to decide whether to allow focus or not via func collectionView(_ collectionView: UICollectionView, canFocusItemAt indexPath: IndexPath) -> Bool

    after some time of investigation, I discovered that when a collectionviewcell overrides canBecomeFocused, the collectionViewDelegate function func collectionView(_ collectionView: UICollectionView, canFocusItemAt indexPath: IndexPath) -> Bool doesn't get called.

    to solve this issue, I just commented the code in ParallaxCollectionViewCell,

    //open override var canBecomeFocused : Bool {
    //        return true
    //}
    
    opened by ninokierulf 1
  • ParallaxView make the app crash in tvOS11 beta2

    ParallaxView make the app crash in tvOS11 beta2

    Cant return row 46 ( static func defaultGlowImageView() -> UIImageView ) in ParallaxEffectOptions.swift so it return Fatal error and crashes the app.

    opened by emiliae 1
  • ParallaxView v2.0.8

    ParallaxView v2.0.8

    Hello Łukasz,

    could it be possible to have a new release of ParallaxView with the changes introduced in this PR? https://github.com/PGSSoft/ParallaxView/pull/5

    Those changes should be 100% backward compatible and it would allow us to start adapting our App to tvOS 11 more easily.

    Thanks a lot btw for sharing this great project 🎩

    opened by dcordero 1
  • glow image customizability

    glow image customizability

    while developing in simulator, the glow seems fine. when viewed in a high res tv, the glow shows aliasing.

    so I was thinking for the original glow image to be rendered using CoreGraphics or for a custom glow image to be set.

    opened by ninokierulf 1
  • Issue in tvOS 15.0

    Issue in tvOS 15.0

    We are working on an OTT app that has many carousels in a home screen created with a collection view inside another collection view (one for horizontal scrolling and another for vertical scrolling). The top-level collection view is part of a child view controller, of a root view controller which has a side menu as another child. This menu view controller has focusable items in it. Till tvOS 14 we were able to navigate from the carousels to the side menu, but since tvOS 15 when we subclassing Parallax Cell the focus is not updating to the side menu. This is happening for only collection view cells with nib in it.

    If you need further information I am happy to share it. Please let me know Thanks

    opened by maneesh-diagnal 1
  • Visual Glitch

    Visual Glitch

    Hi!

    I've ran into an issue where I have a UIStackView with two UIButton inside (which are working fine) and a separate UIButton on my screen but if I focus on the single button outside the UIStackView starts to glitch out while I'm moving around the effect on the button.

    Any ideas?

    Thanks!

    opened by koczka 0
  • Parallax effect

    Parallax effect

    Thank you very much for this library. I am using it inside my Apple TV application and I noticed that the first cell in my UICollectionView has a weird effect when it was focused. You can see how it looked in the image attached. Would you please help me fix it.

    Screen Shot 2021-05-28 at 3 40 15 PM

    opened by adeiry 1
  • Setting a glowContainerView removes UICollectionViewCell#contentView from hierarchy

    Setting a glowContainerView removes UICollectionViewCell#contentView from hierarchy

    Hello and first of all thanks for a great library!

    With version > 3.0.0 or more specifically since commit acaa9b6dc4f5051ae333033e05a080f4866dba2d I see an issue with setting a custom glowContainerView on the ParallaxEffectOptions property of my UICollectionViewCell. No matter how I set the glowContainerView property it results in the cell's contentView being removed from its superview and the cell has no visible content in the UICollectionView.

    My cell inherits from ParallaxCollectionViewCell and in awakeFromNib() or setupParallax() I would like to customize the ParallaxEffectOptions by using the options property and set a different glowContainerView. The glowContainerView property however is at this point already initialized with the cell's contentView (happens in ParallaxCollectionViewCell#commonInit). Setting a different glowContainerView subsequently leads to the contentView being removed from its superview by a property observer. As commonInit is called from the initializer I couldn't find a way to set my own glowContainerView before the contentView is set as default.

    My first guess for a fix would be to remove the property observer on glowContainerView so that it doesn't change the view hierarchy. I am not sure of possible side effects however.

    Kind regards and all the best, Markus

    opened by mskrischke 3
Releases(3.1.2)
Light and scrollable view controller for tvOS to present blocks of text

TvOSTextViewer Light and scrollable view controller for tvOS to present blocks of text Description TvOSTextViewer is a view controller to present bloc

David Cordero 45 Oct 27, 2022
A simple library to make authenticating tvOS apps easy via their iOS counterparts.

Voucher The new Apple TV is amazing but the keyboard input leaves a lot to be desired. Instead of making your users type credentials into their TV, yo

Riz 516 Nov 24, 2022
Google Analytics tracker for Apple tvOS provides an easy integration of Google Analytics’ measurement protocol for Apple TV.

Google Analytics tracker for Apple tvOS by Adswerve About Google Analytics tracker for Apple tvOS provides an easy integration of Google Analytics’ me

Adswerve 81 Nov 13, 2022
Light wrapper of UIButton that allows extra customization for tvOS

FocusTvButton Light wrapper of UIButton that allows extra customization for tvOS If you would like to have the same level of customization in tablevie

David Cordero 68 Nov 12, 2022
📺 A tvOS button which truncates long text with '... More'.

TvOSMoreButton ?? A tvOS button which truncates long text with '... More'. The TvOSMoreButton is a simple view which aims to mirror the behavior of Ap

Chris Goldsby 56 Oct 27, 2022
PIN keyboard for tvOS

TvOSPinKeyboard PIN keyboard for tvOS Description TvOSPinKeyboard is a view controller that allows easily asking for PIN codes in tvOS. Requirements t

Zattoo 102 Oct 5, 2022
Light wrapper of UITableViewCell that allows extra customization for tvOS

TvOSCustomizableTableViewCell Light wrapper of UITableViewCell that allows extra customization for tvOS If you would like to have the same level of cu

Zattoo 31 Nov 9, 2022
TvOSSlider is an implementation of UISlider for tvOS.

TvOSSlider TvOSSlider is an implementation of UISlider for tvOS. Description and usage TvOSSlider palliates missing an implementation of UISlider for

Zattoo 36 Dec 12, 2022
Turn your TV into a dashboard displaying any webpage!

?? WORK IN PROGRESS ?? Turn your TV into a dashboard displaying any webpage! Usage Currently it is not possible to interact with webpages on TV. Use

Sash Zats 223 Dec 18, 2022
Controls-Practice-UIKit- - Controls Practice (UIKit)

Controls Practice (UIKit) Change a number 0 to 255 different ways: Button (+1) I

null 1 Feb 13, 2022
✨ Super easy Parallax and Haptic Effect.

IParallaxAndHapticEffect ✨ Super easy Parallax and Haptic Effect. This library helps you easily use the 'Parallax' and 'Haptic' effects. Customized 3D

Hae Chan 2 Feb 9, 2022
Apple TV Parallax effect in Swift.

MPParallaxView Apple TV Parallax effect in Swift. Rotate view using touch or accelerometer. Usage To run the example project, clone the repo, and run

Droids On Roids 1.7k Jan 4, 2023
iOS 7/8 style side menu with parallax effect.

RESideMenu iOS 7/8 style side menu with parallax effect inspired by Dribbble shots (first and second). Since version 4.0 you can add menu view control

Roman Efimov 7.2k Dec 28, 2022
Beautiful iOS side menu library with parallax effect. Written in Swift

AKSideMenu AKSideMenu is a double side menu library with parallax effect. Example Project See the contained examples to get a sample of how AKSideMenu

Diogo Autilio 280 Dec 6, 2022
A lightweight 3D Linear Carousel with parallax effect

TGLParallaxCarousel A lightweight 3D Linear Carousel with parallax effect [GIF] Threedimensional & Normal mode Installation TGLParallaxCarousel is ava

Matteo Tagliafico 440 Dec 17, 2022
Parallax scrolling effect on UITableView header view when a tableView is scrolled

ParallaxTableViewHeader Parallax scrolling effect on UITableView header view when a tableView is scrolled Usage Create a ParallaxHeaderView using eith

Vinodh Swamy 1.3k Nov 27, 2022
A tiny category on UIView that allows you to set one property: "parallaxIntensity" to achieve a parallax effect with UIMotionEffect

NGAParallaxMotion A tiny category on UIView that allows you to set one property: parallaxIntensity to achieve a parallax effect with UIMotionEffect. S

Michael Bishop 650 Sep 26, 2022
Simple way to add parallax header to UIScrollView/UITableView written in Swift.

ParallaxHeader Simple way to add parallax header to UIScrollView or it's subclasses. One image view Slider with images Blur vibrant text Blur round ic

Roman Sorochak 998 Dec 11, 2022
Text entry controls which contain a built-in title/label so that you don't have to add a separate title for each field.

FloatLabelFields Overview Installation Via Interface Builder Via Code Credits Additional References Questions Overview FloatLabelFields is the Swift i

Fahim Farook 1.2k Jan 4, 2023
Thomas Grapperon 32 Dec 12, 2022