I have moved this over to the Tech Interview Cheat Sheet Repo and has been expanded and even has code challenges you can run and practice against!
\
git fetch --all | |
git reset --hard origin/master | |
git pull origin master |
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.
public class BaseActivity extends AppCompatActivity | |
{ | |
public DrawerLayout drawerLayout; | |
public ListView drawerList; | |
private ActionBarDrawerToggle drawerToggle; | |
protected void onCreate(Bundle savedInstanceState) | |
{ | |
// R.id.drawer_layout should be in every activity with exactly the same id. | |
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
<key>items</key> | |
<array> | |
<dict> | |
<key>assets</key> | |
<array> | |
<dict> |
// Author - Santosh Rajan | |
import Foundation | |
let jsonObject: [AnyObject] = [ | |
["name": "John", "age": 21], | |
["name": "Bob", "age": 35], | |
] | |
func JSONStringify(value: AnyObject, prettyPrinted: Bool = false) -> String { |
// | |
// CollectionViewDataSource.swift | |
// Khan Academy | |
// | |
// Created by Andy Matuschak on 10/14/14. | |
// Copyright (c) 2014 Khan Academy. All rights reserved. | |
// | |
import UIKit |
require "net/http" | |
def start_server | |
# Remove the X to enable the parameters for tuning. | |
# These are the default values as of Ruby 2.2.0. | |
@child = spawn(<<-EOC.split.join(" ")) | |
XRUBY_GC_HEAP_FREE_SLOTS=4096 | |
XRUBY_GC_HEAP_INIT_SLOTS=10000 | |
XRUBY_GC_HEAP_GROWTH_FACTOR=1.8 | |
XRUBY_GC_HEAP_GROWTH_MAX_SLOTS=0 |
var i = 0; | |
function unroll_me_unsubscribe() { | |
// Bail if share modal (indicating free limit reached) is encountered. | |
if ( jQuery( '#fb-root' ).length > 0 ) { return; } | |
var unsub_link = jQuery( '.LetterList a.uicon-set-unsubscribe:first' ); | |
if ( unsub_link.length > 0 ) { | |
document.getElementById( unsub_link.attr( 'id' ) ).click(); | |
if ( i++ < 6000 ) { /* Upper limit in case something goes wrong. */ | |
setTimeout( unroll_me_unsubscribe, 1500 ); | |
} |