Monday Hero
Website
V2
V2
  • Overview
  • Workflow Basics
  • Getting Started
    • Installing the Desktop App
    • Log In & Create a Project
    • Prepare Design to Get the Best Code Results
    • Import Design Files into Monday Hero
      • Import Figma Design Files into Monday Hero
        • Import Your Figma Text Style and Color Library
      • Import Adobe XD Design Files into Monday Hero
      • Import Sketch Design Files Into Monday Hero
    • Share Your Project & Manage Roles
  • DESIGN TO FLUTTER
    • Convert Design to Flutter
    • Create Flutter Components
      • System Components
        • Material & Cupertino Components
        • Flutter Supported Components
      • Custom Components
    • Create Responsive Code
    • Colors
    • Text Styles
    • Assets
    • Sync Code
    • Flutter Project Base
      • Fast Start with Monday Hero Starter Project
      • Integrate Monday Hero to your Existing Project
    • Shadows, Gradients, and Other Design Elements
    • Troubleshooting Guide
      • Checklist for Design Element Review and Code Generation
      • Github Monday Hero Starter Project Troubleshooting
  • DESIGN TO SWIFT
    • Convert Design to Swift
    • Create Swift Components
      • System Components
        • Views
        • Texts
        • Images
        • Button
        • TextField/EditText
        • Text Area
        • Status Bar
        • Search Bar
        • List
        • Grid
        • Swift Supported Components
      • Custom Components
      • Video Player Code Component
    • Colors
    • Text Styles
    • Assets
    • Shadows, Gradients, and Other Design Elements
    • Firebase
      • How to get Video URL from Firebase
    • Export Code
      • Integrating Exported Files into an Existing Xcode Project
  • Hero AI Assistant
    • Hero AI Assistant
  • Design to React
    • Convert Design to React
  • Step-By-Step Tutorials
    • 🏖️Travel App
  • Support
    • Roadmap
    • Suggest a New Feature
    • Report a Bug
    • Product Announcements
    • Mail to Support
    • Frequently Asked Questions
  • Join & Follow Us
    • YouTube
    • Discord Community
    • GitHub
    • Twitter
    • LinkedIn
    • Blog
    • Instagram
    • Facebook
Powered by GitBook
On this page
  • Automatically Detected Views
  • Custom Views

Was this helpful?

  1. DESIGN TO SWIFT
  2. Create Swift Components
  3. System Components

Views

Monday Hero can automatically understand the views, and convert design to Swift/Kotlin code.

PreviousSystem ComponentsNextTexts

Last updated 1 year ago

Was this helpful?

A view expresses a single item on the user interface. It could be a shape like a rectangle, a control item such as a button, an input text field, or an image. A view is a defined specific area on the screen which can be configured to respond to touch events, or it can be used for enriching the user experience.

Monday Hero names rectangles and ovals on the design as Views. However, it's also possible to convert views into components like buttons or create Custom Views to group elements on the page like below:

Automatically Detected Views

On any design, rectangles and ovals are automatically detected as Views on Monday Hero. It's possible to use them as Views or convert them into components like buttons or create Custom Views to group them.

As can be seen below, the Follow button has designed with a blue rectangle and text. Monday Hero automatically detected that the blue rectangle/background is a View and the text is a Label.

The code will be generated like below and constraints are defined in the Storyboard file.

import UIKit

class ProfilePageViewController: UIViewController {
	
	// MARK: - Properties
	@IBOutlet private weak var rectangleView: UIView!

	override func viewDidLoad() {
		super.viewDidLoad()
		setupViews()
		setupLayout()
	}
}

extension ProfilePageViewController {
	private func setupViews() {

		rectangleView.layer.cornerRadius = 6
		rectangleView.layer.masksToBounds =  true 
		rectangleView.backgroundColor = UIColor.cloudBlue

	}

	private func setupLayout() { 
		//Constraints are defined in Storyboard file.
	}
}
<!--activity_profile_page.xml-->
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<androidx.constraintlayout.widget.ConstraintLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:app="http://schemas.android.com/apk/res-auto"
	xmlns:tools="http://schemas.android.com/tools"
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	tools:context=".ProfilePageActivity"
	android:background="?attr/daisy">
	
	<View
	android:id="@+id/containerView"
	android:layout_width="78dp"
	android:layout_height="26dp"
	android:background="@drawable/baseview_background_drawable"
	android:layout_marginEnd="56dp"
	android:layout_marginTop="42dp"
	android:layout_marginBottom="37dp"
	app:layout_constraintStart_toEndOf="@+id/profilPictureImageView"
	app:layout_constraintEnd_toEndOf="parent"
	app:layout_constraintTop_toBottomOf="@+id/nolanAlexTextView"
	app:layout_constraintBottom_toTopOf="@+id/alexanderNolanTextView"/>
	
</androidx.constraintlayout.widget.ConstraintLayout>
<!--Drawables/containerview_background_drawable.xml-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape android:shape="rectangle">
      <solid android:color="?attr/cerulean"/>
      <corners android:radius="6dp"/>
    </shape>
  </item>
</selector>

Custom Views

In order to group elements on the page and reuse them on other pages, it's possible to create custom components. Here is how to do it:

When it's done, you can see it on the components menu and you can get both pure and xib code in iOS:

The code will be generated like below:

import UIKit

class FormItemView: UIView {
	// MARK: - ContentView
	@IBOutlet weak var view: UIView!

	// MARK: - Properties
	@IBOutlet private weak var usernameLabel: UILabel!
	@IBOutlet private weak var emailTextField: FormTextField!

	// MARK: - Initializers
	override init(frame: CGRect) {
		super.init(frame: frame)
		initialize()
	}

	required init?(coder aDecoder: NSCoder) {
		super.init(coder: aDecoder)
		initialize()
	}

	init() {
		super.init(frame: .zero)
		initialize()
	}

	func initialize() {
		initializeNib()
		applyDefaultStyle()
	}

	func initializeNib() {
		Bundle.main.loadNibNamed(String(describing: type(of:self)), owner: self, options: nil)
		addSubview(view)
		view.frame = self.frame
		view.translatesAutoresizingMaskIntoConstraints = false
		NSLayoutConstraint.activate([
			self.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0),
			self.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0),
			self.topAnchor.constraint(equalTo: view.topAnchor, constant: 0),
			self.bottomAnchor.constraint(lessThanOrEqualTo: view.bottomAnchor, constant: 0),
		])
	}

	// MARK: - Styling
	func applyDefaultStyle() {

		usernameLabel.textColor = UIColor.black
		usernameLabel.numberOfLines = 0
		usernameLabel.font = UIFont.textStyle5
		usernameLabel.textAlignment = .left

		emailTextField.set(placeholder: NSLocalizedString("travel.lover", comment: ""))


	}

	func set(usernameLabelText: String, emailTextFieldPlaceholder: String){
		usernameLabel.text = usernameLabelText
		emailTextField.placeholder = emailTextFieldPlaceholder
	}

}

You can also read and see how these Views become a component together. You can check how to create a button component here.

Custom Views and a Button
A View example.
Creating a Custom View
Resuable View Code