From da1a7dd91648b317f449dbc38a43ec5e194a3654 Mon Sep 17 00:00:00 2001 From: Mark Sands Date: Mon, 27 Mar 2017 22:35:22 -0500 Subject: [PATCH] Update Readme --- README.md | 106 +++++++++++++++++++++++++++++++++++++++++++++++++----- icon.png | Bin 0 -> 29743 bytes 2 files changed, 97 insertions(+), 9 deletions(-) create mode 100644 icon.png diff --git a/README.md b/README.md index 7f6ee62..bde731b 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,112 @@ -# ReLax +![icon](icon.png) + +# Re:Lax [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![pod](https://img.shields.io/cocoapods/v/ReLax.svg)](https://cocoapods.org/?q=ReLax) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://choosealicense.com/licenses/mit/) + + +[**From the tvOS HIG**](https://developer.apple.com/tvos/human-interface-guidelines/user-interaction/) + +> If your app uses UIKit and the focus API to implement its user interface, the motion and visual effects of the focus model apply to your interface elements. This makes your app feel native to the platform and helps reduce friction as people move through your interface. When people use the Siri Remote with your app, they’ll find transitioning between focusable elements fluid and intuitive. + +Apple have a few ways to create parallax effects using only tools. Parallax previewer is a stand alone application that can have image layers added to it and can be exported as an LCR file, which is Apple's proprietary parallax file format. They also provide a Photoshop plugin that can export a PSD file as an LCR file. Lastly, there is a command line utility, `layerutil`, that can export LSR or PSD files into an LCR file. + +--- + +### Re:Lax in Action + +**ReLax alleviates the need to use Apple's tools by providing two ways out. It provides custom parallax effects to any programmatic view as well as the ability to generate a parallax LCR file _at runtime!_ See for yourself:**

-## Programmatic Effect +--- + +# LCR Files + +LCR files are most useful when creating Top Shelf extensions that display dynamic parallax content. If your app retrieves layered images from a server at runtime, you must provide those images as `LCR` files. `LCR` files are generated from `.lsr` or Photoshop files using the `layerutil` command-line tool that’s installed with Xcode, or by using `ParallaxPreviewer.app`. This process does not scale when creating parallax files for dynamic content; fortunately, ReLax fixes this. -**ReLax** makes creating programmatic parallax effects super simple: +We have reverse engineered the `LCR` image format in order to make this convenient for content providers. This can be done _on the fly_ without the need to use a server to distribute the parallax image files. ReLax makes programmatically generating `LCR` files within your app or extension a breeze. ```swift -let parallaxView = ParallaxView(images: images) +let parallaxImage = ParallaxImage(images: images) +let lcrImage: UIImage = parallaxImage.image() ``` -## LCR +You also have access to the raw image data if you'd rather write the image to a file to save for later -LCR files are most useful when creating Top Shelf extensions that display parallax content. If your app retrieves layered images from a server at runtime, you must provide those images as `LCR` files. `LCR` files are generated from `.lsr` or Photoshop files using the `layerutil` command-line tool that’s installed with Xcode, or by using `ParallaxPreviewer.app`. This process does not scale when creating parallax files for dynamic content; fortunately, ReLax fixes this. +```swift +try parallaxImage.imageData().write(to: someFileUrl, options: []) +``` -**ReLax** has reverse engineered the `LCR` image format in order to make this convenient for content providers. This can be done _on the fly_ without the need to use a server to distribute the parallax image files. ReLax makes programmatically generating `LCR` files within your app or extension a breeze: +The Example app includes a TopShelf extension which demonstrates how to dynamically create LCR files at runtime and display them on the Top Shelf + +--- + +# Programmatic Effect + +**ReLax** makes creating programmatic parallax effects easy by providing a constructor that takes an array of `UIImage`s ```swift -let parallaxImage = ParallaxImage(images: images) -let lcrImage: UIImage = parallaxImage.image() +let parallaxView = ParallaxView(images: images) ``` + +For more flexibility, `ParallaxView` can be constructed with a `layerContainer` which is a custom view that will apply the parallax effect to all subviews. An `effectMultiplier` is also available if you want to force the parallax effect to be more subtle. + +```swift +// The Parallax Effect is applied to this view, made up of a UIImageView and a UILabel +class ParallaxImageView: UIView, ParallaxContainer { + private let imageView: UIImageView() + private let label: UILabel() + + // ... + + func setupView(with image: UIImage, text: String) { + imageView.iamge = image + label.text = text + } + + func focusChanged(_ focus: ParallaxFocusState) {} + func parallaxShadow(forFocus: ParallaxFocusState, defaultShadow: Shadow) -> Shadow? { + return defaultShadow + } +} + +class ParallaxCell: UICollectionViewCell { + private let parallaxView: ParallaxView + private let container: ParallaxImageView + + init(container: ParallaxImageView) { + container = layerContainer + parallaxView = ParallaxView(layerContainer: container, effectMultiplier: 1.0) + super.init(frame: .zero) + addSubview(parallaxView) + } + + override var isHighlighted: Bool { + didSet { + if isFocused { + let focus: ParallaxFocusState = isHighlighted ? .focusedDepressed : .focused + parallaxView.setFocusState(focus, animationType: .animated) + } + } + } + + override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) { + super.didUpdateFocus(in: context, with: coordinator) + parallaxView.didUpdateFocus(in: context, with: coordinator) + } +} +``` + +## Requirements + +* tvOS 9.0 +* Xcode 8 + +## License + +ReLax is available using an MIT license. See the LICENSE file for more info. + +## We'd Love to Know If You're Using ReLax! + +Tweet us at [@marksands](https://twitter.com/marksands) or [@JARInteractive](https://twitter.com/JARInteractive) to let us know if you're using the library :+1: diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f5d9124ac380aa928768cae7a18860467355dc79 GIT binary patch literal 29743 zcmZ^~19TU zYxl1DRsD8V??&y_kt#~kD2Vuo0000*Rz^Y%0D!>#*Di;L{deT&xK#uIaH*`t#Z_d* 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 literal 0 HcmV?d00001