DEPRECATED – Spotify’s component-driven UI framework for iOS
HUBViewControllerScrollHandler
can now decide which keyboard dismiss mode that the view should use.HUBActionContext
now carries HUBFeatureInfo
, that can be used to make decisions in an action or action handler.HUBViewControllerDelegate
can now change the center point for overlay components, if it wants to.addJSON(data:) throws
and addJSON(dictionary:)
.childDelegate
.HubFramework-iOS
) that will automatically be picked up by Carthage.HUBViewController
now exposes its viewURI
as a public property.HUBManager
now has a convenience initializer that makes it a lot simpler to set up the framework in an app.HUBViewController
now has a reload
API, that reloads its content (regardless of any reload policy). Thanks to @zhubofei for implementing this!HUBViewController
delegate now gets notified whenever a component was reused.customData
to a component's image data (HUBComponentImageData
). Thanks to @zhubofei for helping out on this!HUBBlockContentOperation
) enables you to easily create synchronous content operations using a block.HUBComponentContentOffsetObserver
no longer get called multiple times for the same content offset.HUBComponentFallbackHandler
is now nicer to use in Swift, thanks to fixed nullability annotations.hublive
now restores the original text color in your terminal after printing an error. Thanks to @mpluders for fixing this!HUBContentOperationWithPaginatedContent
and get pagination/infinite scrolling for free.HUBComponentModelBuilder
: All child component model builders can now be retrieved using buildersForChildrenInGroupWithIdentifier
.HUBComponentWithScrolling
protocol).customData
may now be specified when a child component is selected.HUBViewModelLoader
now has a isLoading
property.HUBViewControllerDelegate
has a new viewControllerShouldStartScrolling
API that lets you conditionally enable/disable scrolling.HUBViewModelBuilder
now has a convenience API for setting custom data values: setCustomDataValue:forKey:
.HUBViewModel
's extensionURL
property has been removed in favor of the new HUBContentOperationWithPaginatedContent
API.HUBViewController
no longer calls its scroll handler when the view was scrolled programmatically.HUBViewController
, when components were being reused.HUBViewController
was laid out while the app was backgrounded.HUBViewController
now notifies its delegate when header & overlay components appear, just like it does with body components.HUBViewController
is now exposed a concrete class, making all of its APIs usable from Swift.HUBComponentActionObserver
protocol).HUBViewController
now has a isViewScrolling
property.HUBViewController
programmatically using cancelComponentSelection
.HUBContentOperationActionObserver
's observation method no longer has a viewURI
parameter (since it is included in HUBActionContext
).HUBComponentModel
instances for equality is now slightly more efficient.HUBViewController
's delegate called before header & overlay components were setup.HUBComponentWithSelectionState
, that enables non- table & collection view cell components to respond to user interactions and render a selection state.HUBContentOperationActionPerformer
, that enables content operations to perform actions.HUBAsyncAction
.HUBViewController. visibleBodyComponentViews
now returns all visible components (both root & children), keyed on their index path.HUBComponentActionDelegate
is now HUBActionPerformer
.HUBComponentActionPerformer.actionDelegate
is now .actionPerformer
.Swift API:
HUBComponentModelBuilder.forChildWithIdentifier("id")
is now .builderForChild(withIdentifier: "id")
.HUBComponentModelBuilder.removeForChild(withIdentifier: "id")
is now .removeBuilderForChild(withIdentifier: "id")
.HUBComponentModel
(thanks @joanromano!)HUBImageLoader
implementations now don't have to track download durations manually.HUBDefaultImageLoader
now doesn't do a manual cache lookup.HUBViewController
will now send a component's UIView
as part of its delegate methods, instead of sending the HUBComponentCollectionViewCell
that wraps it.UI(Table|Collection)ViewCell
.
UINavigationItem
support. Set it on HUBViewModelBuilder
, and the framework will assign it to the associated UIViewController
.HUBBlockContentOperationFactory
, a concrete content operation factory implementation that uses a block to create operations. Useful when a custom factory is not needed.HUBComponentContentOffsetObserver
are now notified when they appear on the screen.HUBComponentContentOffsetObserver
as well.HUBViewModel.title
removed in favor of HUBViewModel.navigationItem.title
.The first open source release of the Hub Framework ?