Apply code-based style guides to iOS storyboards using Swift custom classes.
Nori is an iOS library that allows developers to apply code-based style guides to storyboard views. It provides custom `Styleable` UI components (like `StyleableLabel`, `StyleableButton`) that can be designed in Swift code and rendered live in Interface Builder. This solves the problem of maintaining visual consistency between code and storyboard designs.
iOS developers who use Interface Builder storyboards but want to define UI styles programmatically for better consistency and reusability.
Developers choose Nori because it uniquely bridges storyboard design with code-based styling, offering live previews via @IBDesignable while keeping style logic in Swift for maintainability.
Easier to apply code based style guide to storyboard.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports @IBDesignable for real-time rendering of custom styles directly in Interface Builder, speeding up design iteration as shown in the README's GIF example.
Enables UI styles to be defined in Swift classes like StyleableLabel, ensuring reusable and maintainable components across storyboards, aligning with the philosophy of keeping styling logic in code.
Allows buttons to define different styles for each UIControlState, such as normal or highlighted, providing flexibility for interactive elements without manual state handling.
Covers essential UIKit components including Label, Button, and TextField, making it practical for common UI tasks in storyboard-based apps.
Only supports six view types, missing complex or custom views like TableViewCell or CollectionView, which limits its use in advanced UI scenarios.
Heavily dependent on Interface Builder and UIKit, making it unsuitable for modern SwiftUI projects and creating migration challenges for teams adopting newer technologies.
Requires creating custom subclasses and overriding methods like intrinsicStyle() for each style, which can be verbose and time-consuming for simple styling needs.