Releases: zenangst/Spots
7.0.1
7.0.0
This release is a big one and its definitely our best release yet. Here are some of the highlights.
In this release we have spent a significant amount of time improving how Spots works on tvOS.
But don't worry, we have something for everyone.
🌈 Custom models and presenters
The biggest game changer in Spots 7 is that you can now use custom models on your items which
means that you are no longer restricted to the default data fields that come out of the box with
Item
. To use custom models on your items, you need to make your custom models conform to
ItemModel
. The main thing that you need to implement is make these equatable as these models
will be included when diffing if an item changed or not when doing reload operations.
In combination to having custom models, we also now support presenters. These are used to
make a relation between models and custom views. Working with presenters can look like this:
Configuration.shared.register(presenter: Presenter<CustomView, CustomModel>(identifier: "My model") { (view, model, _) in
view.titleLabel.text = model.title
return .init(width: 960, height: 360)
})
Using custom models with your views lifts the constraint on your views having to conform to ItemConfigurable
.
📺 tvOS and focus guides
SpotsController
now has a focus guide which gives you more fine-grained control when working
with preferred focused views. Component
also have their own focus guides, that way they can
keep track of which items were selected when navigating between multiple components.
Focus guides are disabled by default by are setup and ready to use, the only thing that you
need to do to enable them is simply set .isEnabled
to true
.
Other improvements to tvOS includes writing a tailored SpotsScrollView
layout algorithm.
🕵🏻♀️ Diffing
To make diffing less intrusive to the user, comparing models to generate change sets have now
been move of the main thread and into an interactive thread.
And last but not least, we have done minor/major performance improvements across the board for all
platforms.
We hope you will love Spots 7 as much as we do.
Implemented enhancements:
- Add a test for checking the new
clean
property inprepareItems
. #574
Fixed bugs:
- Keep selection on tvOS when reloading with components #407
Closed issues:
- Item with uilabel not expanding with text after sizeToFit #661
Merged pull requests:
- Feature focus guide on Component #777 (zenangst)
- Add type to view(at:) method on UserInterface #776 (zenangst)
- Use width from presenter if span is set to 0 #775 (zenangst)
- Optimize tvOS performance #774 (zenangst)
- Improve/fast scrolling on tvos part4 #773 (zenangst)
- Improve/fast scrolling on tvos part3 #772 (zenangst)
- Improve
delegate.didReachEnd
algorithm #771 (zenangst) - Refactor SpotsScrollView to work better with fast scrolling in vertical collection views #770 (zenangst)
- Fix bug when you try to reload an empty Component #769 (zenangst)
- Allow scroll views to scroll inside SpotsScrollView #768 (zenangst)
- Improve the FocusEngineManager when using grids #767 (zenangst)
- Fixes bug where completion is run multiple times #766 (zenangst)
- Improve: item model equatable #765 (vadymmarkov)
- Optimize component layout methods #764 (zenangst)
- Optimize component setup and prepare methods #763 (zenangst)
- Move diffing to interactive thread #762 (zenangst)
- Fix typos, improve grammar in Readme #761 (richardtop)
- Improve comparing models #760 (zenangst)
- Include iOS-Exclusive #759 (onmyway133)
- Remove RxSpot #758 (onmyway133)
- Add model configuration to header and footers #757 (zenangst)
- Update Spots.podspec #756 (zenangst)
- Merge branch 'master' into feature/codable #755 (zenangst)
- Feature: Codable support #754 (vadymmarkov)
- Fix focus engine bug when reaching the top. #753 (zenangst)
- Remove manual handling of content offset for horizontal components #752 (zenangst)
- Improve focus engine for tvOS - part something something #751 (zenangst)
- Replace Mappable with Codable #750 (vadymmarkov)
- Codable refactoring: Implement custom coders #749 (vadymmarkov)
- Feature: Implement Codable #748 (vadymmarkov)
- Swift4 migration #747 (vadymmarkov)
- Merge Swift 4 with master #746 (zenangst)
- Autumn code cleaning #745 (zenangst)
- Migrate source code to Swift 4 #744 (vadymmarkov)
- Refactor Configuration to be injected #743 (zenangst)
- Refactor/hard medium soft updates implementation #742 (zenangst)
- Sanitize naming in tests and add additional to improve coverage #741 (zenangst)
- Feature item models #740 (zenangst)
- Add additional delegate methods for controlling scrolling on tvOS #739 (zenangst)
6.1.2
- Faulty observers in SpotsScrollView (hyperoslo@5318ddf)
- 🍒-pick refinements from
master
(hyperoslo@0befc13)
6.1.1
- Opt-out from using auto resizing cells (hyperoslo@d9282b6)
6.1.0
6.0.3
6.0.2
6.0.1
5.8.4
6.0.0
A lot has changed in 6.0.0. You can read a summary about the changes here
Here is a shorter summary of what is new in 6.0.0.
- Improved layout calculations when working with collection views that use layout
- View no longer need to inherit from the UI element from where it will be used.
- Core types are removed and replaced with
Component
. - Naming has been greatly improved throughout the framework.
- Rendering issues when doing a lot of mutation has been greatly improved.
- Performance improvements related to caching https://github.com/hyperoslo/Spots/pull/597
- Brick has been removed as a dependency.
- The documentation has been improved.
- Bug fixes has been made to the reload if needed methods.
- Features universal sticky headers on iOS.