LoadableViews
Easiest way to load view classes into another XIB or storyboard.
Basic setup
- Subclass your view from
LoadableView
- Create a xib file, set File's Owner class to your class
- Link outlets as usual
Usage
- Drop UIView to your XIB or storyboard
- Set it's class to your class name
Your view is automatically loaded to different xib!
IBInspectable && IBDesignable
IBInspectables automatically render themselves if your view is IBDesignable. Usually Interface Builder is not able to automatically figure out that your view is IBDesignable, so you need to add this attribute to your view subclass:
@IBDesignable class WTFCatView: LoadableView
UI classes supported
- UIView -
LoadableView
- UITableViewCell -
LoadableTableViewCell
- UICollectionViewCell -
LoadableCollectionViewCell
- UICollectionReusableView -
LoadableCollectionReusableView
- UITextField -
LoadableTextField
- NSView -
LoadableView
usingAppKit
To use loading from xibs, for example for UICollectionViewCells, drop UIView instead of UICollectionViewCell in InterfaceBuilder, and follow basic setup. Then, on your storyboard, set a class of your cell, and it will be automatically updated.
Customization
Change xib name
class CustomView : LoadableView {
override var nibName : String {
return "MyCustomXibName"
}
}
Change view container
class CustomViewWithLoadableContainerView : LoadableView {
override var nibContainerView : UIView {
return containerView
}
}
Making your custom views loadable
- Adopt
NibLoadableProtocol
on your customUIView
orNSView
subclass. - Override
nibName
andnibContainerView
properties, if necessary. - Call
setupNib
method in bothinit(frame:)
andinit(coder:)
methods.
Known issues
IBDesignable
attribute is not recognized when it's inside framework due to bundle paths, which is why in current version you need to addIBDesignable
attribute to your views manually.UITableViewCell
and thereforeLoadableTableViewCell
cannot be madeIBDesignable
, because InterfaceBuilder usesinitWithFrame(_:)
method to render views: radar, stack overflowUIScrollView
subclasses such asUITextView
don't behave well with loadable views being inserted, which is whyUITextView
loadable subclass is not included in current release, but may be implemented in the future.
Requirements
- iOS 8+
- tvOS 9.0+
- macOS 10.12+
- Swift 5 / 4.0 / 3.2
Installation
CocoaPods
pod 'LoadableViews'
License
LoadableViews
is released under the MIT license. See LICENSE for details.
About MLSDev
LoadableViews
are maintained by MLSDev, Inc. We specialize in providing all-in-one solution in mobile and web development. Our team follows Lean principles and works according to agile methodologies to deliver the best results reducing the budget for development and its timeline.
Find out more here and don't hesitate to contact us!