Git Product home page Git Product logo

promotion's Introduction

ProMotion

Gem Version Build Status Code Climate

ProMotion is maintained by Infinite Red, a web and mobile development company based in Portland, OR and San Francisco, CA.

iPhone Apps, Ruby-style

ProMotion is a RubyMotion gem that makes iOS development more like Ruby and less like Objective-C. It introduces a clean, Ruby-style syntax for building screens that is easy to learn and remember and abstracts a ton of boilerplate UIViewController, UINavigationController, and other iOS code into a simple, Ruby-like DSL.

# app/app_delegate.rb
class AppDelegate < PM::Delegate
  status_bar true, animation: :fade

  def on_load(app, options)
    open RootScreen
  end
end

# app/screens/root_screen.rb
class RootScreen < PM::Screen
  title "Root Screen"
  nav_bar true

  def on_load
    set_nav_bar_button :right, title: "Help", action: :open_help_screen
  end

  def open_help_screen
    open HelpScreen
  end
end

# app/screens/help_screen.rb
class HelpScreen < PM::TableScreen
  title "Table Screen"

  def table_data
    [{
      title: "Help",
      cells: [
        { title: "About this app", action: :tapped_about },
        { title: "Log out", action: :log_out }
      ]
    }]
  end

  def tapped_about(args={})
    open AboutScreen
  end

  def log_out
    # Log out!
  end
end

Features

Screens Navigation Bars Tab Bars
ProMotion Screen ProMotion Nav Bar ProMotion Tabs
Table Screens Grouped Tables Searchable Refreshable
ProMotion TableScreen Grouped Table Screen Searchable Refreshable
SplitScreens Map Screens Web Screens
ProMotion SplitScreens MapScreen ProMotion WebScreen

NEW [Live reloading!](http://promotion.readthedocs.org/en/master/Guides/Live Screen Reloading/) Use pm_live to enable it, and on_live_reload in your screen to refresh things.

...and much more.

Getting Started

  1. Check out the Getting Started Guide
  2. Watch the excellent MotionInMotion screencast about ProMotion (very reasonably priced subscription required)
  3. Follow a tutorial: Building an ESPN app using RubyMotion, ProMotion, and TDD
  4. Read the Documentation

Changelog

Version 2.6.1

This release includes a few new features and bugfixes and is backwards compatible with all 2.x releases.

  • PR #777 New Feature: Add ability to register live reload plugins
  • PR #778 Bugfix: Only update search results table data if possible
  • PR #779 Fix bug where remote images are not shown on first load of table screen
  • PR #787 Fix Travis CI build from failing when RubyMotion is up-to-date
  • PR #796 Fix iOS 10 from crashing when determining supportedInterfaceOrientations for UIImagePickerController
  • Other minor bugfixes and documentation updates

Version 2.6.0

This release includes a few new features and bugfixes and is backwards compatible with all 2.x releases.

  • PR #773 Add a on_continue_user_activity delegate method
  • PR #766 Fix nav_bar_button class method
  • Other minor bugfixes and documentation updates

Version 2.5.0

This release includes some new features and bugfixes and is backwards compatible with all 2.x releases.

  • PR #763 Adds footer_view to TableScreens
  • PR #705 Adds split-screen support for large iPhones
  • PR #736 Adds the index path when deleting a cell
  • Several other bugfix PRs

Apps built on ProMotion

Apps built on ProMotion

Your app

Open a pull request! We love adding new ProMotion-built apps.

API Reference

We've created a comprehensive and always updated wiki with code examples, usage examples, and API reference.

Screencasts

Help

ProMotion is not only an easy DSL to get started. The community is very helpful and welcoming to new RubyMotion developers. We don't mind newbie questions.

The quickest way to get help is to join the Motioneers Slack Group. If you still need help, feel free to open an issue on GitHub. If we don't respond within a day, tweet us a link to the issue -- sometimes we get busy.

Contributing

See CONTRIBUTING.md.

Core Team

Other Contributors

promotion's People

Contributors

adam-pl avatar andrewhavens avatar austinseraphin avatar bitgangsta avatar bmichotte avatar carlinisaacson avatar cavalryjim avatar chrise86 avatar dchersey avatar dmarkow avatar gertig avatar hellopatrick avatar jamonholmgren avatar jbender avatar jeffcarbs avatar jonmorehouse avatar jsierles avatar kevinvangelder avatar macfanatic avatar markrickert avatar markvillacampa avatar mattgreen avatar ohammersmith avatar robertjwhitney avatar ryanlntn avatar satoyos avatar sxross avatar thecodeduchess avatar toshiwo avatar waffle-iron avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.