ARM64 support (64-bit), build your App Extensions now
Until version 2.36, RubyMotion did not support 64-bit. Because of this, you could not write App Extensions that worked on a device. 2.36 fixes this issue. Go forth and extend.
See below in the release notes for more info.
If you missed the last issue, you can find it here: issue #46.
Happy coding, Todd Werth (@twerth)
Articles, News, New Gems, and Blog Posts
October 13th, 2014 | screencast | by Jack Watson-Hamblin
“MotionInMotion – RubyMotion for Rails Developers: Hello RubyMotion”
October 10th, 2014 | blog post | by Christoffer Lernö
“The Other Alternatives – While Swift is working towards 1.1, I thought it could be interesting to compile an inventory of languages that position themselves on top of the ObjC runtime.”
October 9th, 2014 | blog post | by Jack Watson-Hamblin
“Big changes coming to MotionInMotion and RailsInMotion”
October 7th, 2014 | new gem | by Eric Henderson
“motion-paddle – A RubyMotion gem for the Paddle framework”
October 6th, 2014 | podcast | by Access Ninja
“Access Ninja episode 004: Austin Seraphin part 1 (Austin is always fun)”
October 6th, 2014 | screencast | by Jack Watson-Hamblin
“MotionInMotion – Episode 46 – From Interface Builder to NSLayoutConstraints”
October 5th, 2014 | new gem | by digitalfx
“RubyMotion-Leap-Motion – A starting point for using the Leap Motion in RubyMotion”
October 2nd, 2014 | video | by RubyKaigi
“Laurent Sansonetti – Inside RubyMotion for Android – RubyKaigi 2014”
RubyMotion 2.36 released
- Added ARM64 support (64-bit) for iOS. It is not yet enabled by default for
applications that do not embed Frameworks or App Extensions. In order to
enable it on other builds add the following line to your project’s Rakefile:
app.archs['iPhoneOS'] |= ['arm64']
- iOS 4.3 and OS X 10.7 are no longer supported, due to internal changes
that require us to use a newer C++ standard library.
- [iOS] Fixed a bug where the
app.provisioning_profilesetting would not be
configurable in the Rakefile of App Extensions projects.
- Fixed a bug when copying an
ImmediateRef, which isn’t needed anyways,
because a tagged pointer can not be duplicated either.
- Fixed a bug where Xcode 6 would cache precompiled headers in a
hidden location and subsequent vendored builds could fail after cleaning.
- Fixed a bug where a failed vendored build could cause subsequent builds to
never actually start.
- Fixed the build system to remove Xcode 6 noise from vendored build output.
- Fixed a bug where the
#supportedInterfaceOrientationsmethod would be not
- Fixed a race condition bug in the runtime where a crash would occur if
the same Objective-C constant was being resolved at the same time from
- Fixed the
motion changelogcommand to honor the
--preflag, which will
open the pre-release NEWS file instead.
- Fixed the
motion update --precommand to print a reference to the
motion changelog --precommand.
IO#.read performanceto read from files. ~4 times faster.
sudo motion update
Hidden Gem by Gant Laborde
“My custom font is not being positioned right!”
This info might save you a ton of time one day. It’s not specific to anything RM, but that’s what makes it so tricky!
Custom fonts are a great thing to add to any iOS app, but sometimes they pack a hidden cost. The font creator may not have tested their font on iOS/OSX. That’s why generally do my best to stick to Native iOS Fonts. If your font is being clipped in the containing label in any direction, you’re not going to be able to set an inset to fix this. You’re going to need to modify the actual font with a font editor like Mensis or Apple Font Tool Suite. Today I’m showing the latter.
Using the command
ftxdumperfuser, which is one of the many commands in the suite, we can force an XML generation of the font attributes. The command used on a font named MetaOT-Norm.otf would be:
$ ftxdumperfuser -t hhea -A d MetaOT-Norm.otf and will generate a file called
In the above command -A is for auto-fuse of the XML in and out (-A d/-A f). “-t hhea” is specifying we’re going to modify the horizontal-header table, where we can pad the font properties correctly.
Modify the properties of this XML file. For me the Descending property needed to be toned down from “-347” to “-247”.
You can then merge your changes back into the file with the command:
$ ftxdumperfuser -t hhea -A f MetaOT-Norm.otf
VOILA! The custom font works like a charm now!
RMQ Tips of the Week
I haven’t done an RMQ tip in a while, so I have a few tips for you this week:
rmq by itself
rmq by itself is the same as
rmq(rmq.root_view), it’s just a shortcut. So when you do something like this:
You are really logging the root view’s tree. Same thing for
rmq.append(UIButton), that is appending a button to the root view.
The one odd thing is when you’re using a utility, which really doesn’t apply to the root view, such as:
Technically it still has selected the root_view, but you aren’t using it.
Did you know you can animate simply with rmq? Like so:
rmq.animate do rmq(UIButton).nudge r: 40 end
A better way to do that is select something first. In this case q is an RMQ instance selecting all UIButtons:
rmq(UIButton).animate do |q| q.nudge r: 40 end
You can read more about it here.
From the Archives
(because it’s easier to copy & paste than to write)
iOS Marketing Tip of the Week by Mark Rickert
Did you know that you can contest bad reviews your apps get in the App Store? I’ve done this a few times when a user gave me a 1-star review for the app lacking a feature that existed since version 1.0.0. Apple actually reads these and the reviews were removed from iTunes within a few days.
Here’s a step-by-step guide on how to get the inaccurate review removed:
- Log into iTunes Connect.
- In the lower right corner, click the
- From the dropdowns, select:
App Store Questions, then
Customer Reviews, then
Specific Removal Request.
- A text block will appear with another
contact uslink. Click that, fill in the requested information, and submit!
Apple sure makes this hard for us developers to find, but at least there’s a way to contest the inaccurate or inappropriate reviews.
My company InfiniteRed sponsors this newsletter by allowing me the time to work on it every week and hosting everything.
Contact us if you ever need help working on a project, mentoring, or other development services . We specialize in RubyMotion and have an awesome team.
If you have any tips, blog posts, or comments, please send emails to firstname.lastname@example.org