- Introduction to Functional Programming Johannes Weiß - https://vimeo.com/100786088
- ReactiveCocoa at MobiDevDay Andrew Sardone - https://vimeo.com/65637501
- The Future Of ReactiveCocoa Justin Spahr-Summers - https://www.youtube.com/watch?v=ICNjRS2X8WM
- Enemy of the State Justin Spahr-Summers - https://www.youtube.com/watch?v=7AqXBuJOJkY
- WWDC 2014 Session 229 - Advanced iOS Application Architecture and Patterns Andy Matuschak - https://developer.apple.com/videos/play/wwdc2014/229/
- Functioning as a Functionalist Andy Matuschak - https://www.youtube.com/watch?v=rJosPrqBqrA
- Controlling Complexity in Swift Andy Matuschak - https://realm.io/news/andy-matuschak-controlling-complexity/
// | |
// AGSSingleFingerZoomGestureRecognizer.swift | |
// | |
// Created by Nicholas Furness on 6/17/16. | |
// Copyright © 2016 Esri. All rights reserved. | |
// | |
import Foundation | |
import ArcGIS |
<?xml version="1.0" encoding="UTF-8"?> | |
<Bucket | |
type = "2" | |
version = "2.0"> | |
<Breakpoints> | |
<!-- All Exceptions --> | |
<BreakpointProxy | |
BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint"> | |
<BreakpointContent |
// | |
// MultiDirectionAdjudicatingScrollView.swift | |
// Khan Academy | |
// | |
// Created by Andy Matuschak on 12/16/14. | |
// Copyright (c) 2014 Khan Academy. All rights reserved. | |
// | |
import UIKit | |
import UIKit.UIGestureRecognizerSubclass |
#import <Foundation/Foundation.h> | |
// typedef | |
typedef NSString*(^ConvertBlock)(NSString *text); | |
@interface Thing : NSObject | |
@property (nonatomic, strong) void (^coolPropertyBlock)(NSString *text); // Property | |
// method param | |
- (void)doSomething:(void(^)(NSString *text))block with:(NSString *)person; |
In this article, I'm going to explore a way that we can create views that implement custom Core Animation property animations in a natural way.
As we know, layers in iOS come in two flavours: Backing layers and hosted layers. The only difference between them is that the view acts as the layer delegate for its backing layer, but not for any hosted sublayers.
In order to implement the UIView
transactional animation blocks, UIView
disables all animations by default and then re-enables them individually as required. It does this using the actionForLayer:forKey:
method.
Somewhat strangely, UIView
doesn't enable animations for every property that CALayer
does by default. A notable example is the layer.contents
property, which is animatable by default for a hosted layer, but cannot be animated using a UIView
animation block.
#!/bin/bash | |
############################################################################ | |
# Automated WWDC 2014 videos downloader script | |
# Cristian Grau @SaroFR | |
# Based on Krzysztof Zablocki's (@merowing_) Download HD WWDC 2014 command | |
############################################################################ | |
function download { | |
curl --silent --remote-name $1 |
CGFloat ScaleToAspectFitRectInRect(CGRect rfit, CGRect rtarget) | |
{ | |
// first try to match width | |
CGFloat s = CGRectGetWidth(rtarget) / CGRectGetWidth(rfit); | |
// if we scale the height to make the widths equal, does it still fit? | |
if (CGRectGetHeight(rfit) * s <= CGRectGetHeight(rtarget)) { | |
return s; | |
} | |
// no, match height instead | |
return CGRectGetHeight(rtarget) / CGRectGetHeight(rfit); |
// | |
// JSDynamicRowHeightTableViewController.h | |
// | |
// Created by Javier Soto on 7/25/13. | |
// Copyright (c) 2013 JavierSoto. All rights reserved. | |
// | |
#import <UIKit/UIKit.h> | |
/** |
# This script will auto-increment your Xcode project's build number for every build (debug & release). | |
# It will also increment the third position of a semantic formatted version string only for release builds | |
# | |
# Examples: | |
# Buil number (CFBundleVersion): from 1.2.1235 to 1.2.1236 | |
# Version string (CFBundleShortVersionString): from 1.2.5 to 1.2.6 | |
# | |
# 1. Select your Target in Xcode | |
# 2. Select "Build Phases" Tab | |
# 3. Select "Add Build Phase" -> "Add Run Script" |