im ti nfernandgaliana
Friday, May 17, 13
Born and raised in
Crieff!
Friday, May 17, 13
Friday, May 17, 13
kitesurfer
derailed
github.com/derailed
fernand.galiana
Friday, May 17, 13
Friday, May 17, 13
ObjC
IOS SDK
Xcode
Memory
Friday, May 17, 13
Friday, May 17, 13
Friday, May 17, 13
Friday, May 17, 13
blownspeaker!
Friday, May 17, 13
railsBRO
IOS
IOS
IOS
Db
Fb
Friday, May 17, 13
bigdeal?
Not even Ruby!
Still need to learn IOS
Can’t use my xxx gem ;-(
Write once, run once
Friday, May 17, 13
Friday, May 17, 13
Friday, May 17, 13
Friday, May 17, 13
Friday, May 17, 13
cocoapods
app.pods do
pod 'AFNetworking'
end
Rakefile
Friday, May 17, 13
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *myString = [prefs stringForKey:@"bumbleblee_tuna"];
Friday, May 17, 13
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *myString = [prefs stringForKey:@"bumbleblee_tuna"];
Friday, May 17, 13
NSUserDefaults.standardUserDefaults.
objectForKey("bumblebee_tuna")
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *myString = [prefs stringForKey:@"bumbleblee_tuna"];
Friday, May 17, 13
NSUserDefaults.standardUserDefaults.
objectForKey("bumblebee_tuna")
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *myString = [prefs stringForKey:@"bumbleblee_tuna"];
Friday, May 17, 13
NSUserDefaults.standardUserDefaults.
objectForKey("bumblebee_tuna")
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *myString = [prefs stringForKey:@"bumbleblee_tuna"];
App.user_cache[:bumblebee_tuna]
Friday, May 17, 13
NSUserDefaults.standardUserDefaults.
objectForKey("bumblebee_tuna")
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *myString = [prefs stringForKey:@"bumbleblee_tuna"];
App.user_cache[:bumblebee_tuna]
bubble-wrapped
Friday, May 17, 13
NSUserDefaults.standardUserDefaults.
objectForKey("bumblebee_tuna")
NSUserDefaults *prefs =
[NSUserDefaults standardUserDefaults];
NSString *myString =
[prefs stringForKey:@"bumbleblee_tuna"];
App.user_cache[:bumblebee_tuna]
bubble-wrapped
Friday, May 17, 13
Friday, May 17, 13
UIColor.colorWithRed( 50/255.0,
green:50/255.0,
blue:50/255.0,
alpha:0.5 )
0x5b5b5b.uicolor
Friday, May 17, 13
UIColor.colorWithRed( 50/255.0,
green:50/255.0,
blue:50/255.0,
alpha:0.5 )
0x5b5b5b.uicolor
sugarcubed
Friday, May 17, 13
✓Rails integration
✓Collections
✓Third party services
✓Autolayout
✓Web views
✓Social connect
✓Pods
✓RM Gems
✓CustomViews
✓Custom Alerts
✓Notifications
✓Styling
✓Gestures
Friday, May 17, 13
localweb
def viewDidLoad
super
@content = UIWebView.alloc.initWithFrame( [[0,0],[300,300]] )
@content.loadHTMLString( html, baseURL:base_url )
view.addSubview( @content )
end
def base_url
@base_url ||= NSURL.fileURLWithPath( App.resources_path )
end
def html
<<HTML
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/font-awesome.css"/>
<link rel="stylesheet" type="text/css" href="css/app.css"/>
</head>
...
</html>
HTML
end
Friday, May 17, 13
networking
app.pods do
pod 'AFNetworking'
end
def self.shared
$instance ||= begin
BlownSpeakerClient.alloc.initWithBaseURL( base_url ).tap do |client|
client.registerHTTPOperationClass( AFJSONRequestOperation )
client.setDefaultHeader( 'Accept', value:'application/json' )
end
end
end
def fetch_proposals(&cb)
getPath( "/confs/#{App.delegate.conf_id}.json",
parameters: {},
success: ->(operation, response) { cb.call response, nil },
failure: ->(operation, error) { cb.call nil, error }
)
end
def self.base_url
@url ||= begin
uri = Device.simulator? ? "http://localhost:3000" : "http://192.168.122:3000"
NSURL.URLWithString( uri )
end
end
def setup( talk )
...
@mug_shot.setImageWithURL( NSURL.URLWithString( talk.speaker.avatar ),
placeHolderImage: place_holder_img )
end
Rakefile
Friday, May 17, 13
Friday, May 17, 13
|[visual]-20-[constraints]|
@content.translatesAutoresizingMaskIntoConstraints = false
def setup_constraints
metrics = { 'sp' => 5 }
contentView.addConstraints
NSLayoutConstraint.constraintsWithVisualFormat
"V:|-ps-[mug_shot(100)][scorer(20)][speaker(30)]-ps-",
options: 0,
metrics: metrics,
views: @views ))
...
end
Friday, May 17, 13
soopastyling!
I don’t usually pimp out my UI’s,
but when I do...
I use stylesheets!
Friday, May 17, 13
NUI
Pixate
Teacup
Promotion
Friday, May 17, 13
Friday, May 17, 13
testing
Friday, May 17, 13
appstore
Friday, May 17, 13
appstore
✓ Distribution profile
✓App screenshots x-devices
✓Icons (@2x) - rinse and repeat for devices!
✓ITune connect
✓rake archive:distribution
✓Application loader
Friday, May 17, 13
arewethereyet?
Friday, May 17, 13
appstorereality
Friday, May 17, 13
Friday, May 17, 13
pimpitdogg!
Friday, May 17, 13
motionblow
Friday, May 17, 13
Friday, May 17, 13
questions?
Friday, May 17, 13

I motion