Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

motion-pixate-layout

Package Overview
Dependencies
Maintainers
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

motion-pixate-layout

  • 0.0.6
  • Rubygems
  • Socket score

Version published
Maintainers
2
Created
Source

MotionPixateLayout

Build Status Code Climate

This project adds a simple DSL to your Rubymotion UIViewControllers to create subviews to be styled with Pixate.

The idea is inspired by Teacup, which has an awesome layout/subview DSL for laying out your controllers. While this DSL is great, Teacup brings in a lot of style/stylesheet features that are not useful to Pixate users. MotionPixateLayout also adds a convenient shorthand selector to quickly set the styleId and styleClass of subviews.

A quick example

class MyViewController < UIViewController
  pixate_layout '#my-view.fancy' do
    UILabel '#title-label.small.green', text: 'My Title'
    UIButton '#ok-button.call-to-action'
    UIView '#parent' do
      UILabel '#child'
    end
  end
end

This code hooks into UIViewController's viewDidLoad mode and:

  1. Sets view.styleId to 'my-view'
  2. Sets view.styleClass to 'fancy'
  3. Adds a UILabel with these attributes as a subview of the controller's view:
    • styleId: 'title-label'
    • styleClass: 'small green'
    • text: 'My Title'
  4. Adds a UIButton with these attributes as a subview of the controller's view:
    • styleId: 'ok-button'
    • styleClass: 'call-to-action'
  5. Adds a UIView with styleId of 'parent' to the controllers view with a child subview with styleId 'child'

Accessing subviews

MotionPixateLayout adds a subviews accessor to UIViewController that returns a hash of the controller's main view's subviews, where the keys are the styleId of the subview. To set the text of the title-label in the above example, we can access the subview by its id:

class MyViewController < UIViewController
  # pixate_layout { ... }

  def update_label_text
    subviews['title-label'].text = 'An updated title'
  end
end

Context and lifecycle

Be aware that inside the pixate_layout block is instance_eval'ed in the context of a proxy object, so you can't call methods on or add instance variables to your controller there. MotionPixateLayout adds 2 lifecycle hooks, before_pixate_layout and after_pixate_layout that execute in the context of your controller instance before and after the layout block, respectively.

class MyViewController < UIViewController
  pixate_layout do
    @layout = true # Does not set an instance variable in controller
  end

  before_pixate_layout do
    @layout = true # sets @layout instance variable in controller
  end

  after_pixate_layout do
    @layout = true # sets @layout instance variable in controller
  end
end

Installation

If you're using Bundler, just add gem 'motion-pixate-layout' to your Gemfile, and bundle install.

Make sure you've vendored the Pixate framework and set up motion-pixate.

To-do

  • Generalize to work with NUI in addition to Pixate (rename?)
  • More examples

Suggestions? Comments?

I'd love some.

Contributions

Are welcome. Please fork and submit a pull request with some specs.

FAQs

Package last updated on 19 Jun 2013

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc