Which apps do you use?

Which apps do you use?
facebook, youtube, facebook messenger, instagram, facetime, snapchat, google maps, pandora maps, pandora radio, twitter, google

“the network” to refer to the internet—the global system of interconnected computer networks that many of us interact with everyday.

Data <-http-> Data

protocol
– a way of communicating
– standard operating procedure
– the rules for communication

Getting Data with HTTP
-> http get request

Table views

Delegate Pattern
Controller, Protocol, View

we use the most to customize the textfield.
textField(_:shouldChangeCharactersInRange: replacementString:)

An array of structs

struct Album {
	let name:String
	let image:UIImage
	let count:Int
}

An array of dictionaries

let albums = [
	["name": "Camera Roll", "imageName": "img1", "count": 5],
	["name": "Recently Deleted", "imageName": "img2", "count": 0],
]

Generating a meme object

func save(){
	let meme = Meme(topText: topTextField.text!, bottomText: bottomTextField.text!, originalImage: imageView.image!, memedImage: memedImage)
}

func generateMemedImage() -> UIImage {
	UIGraphicsBeginImageContext(self.view.frame.size)
	view.drawHierarchy(in: self.view.frame, afterScreenUpdates: true)
	let memedImage:UIImage = UIGrphicsGetImageFromCurrentImageContext()!
	UIGraphicsEndImageContext()

	return memedImage
} 

What about the camera?

@IBAction func pickAnImageFromAlbum(_ sender: Any){
	let imagePicker = UIImagePickerController()
	imagePicker.delegate = self
	present(imagePicker, animated: true, completion: nil)
}

@IBAction func pickAnImageFromCamera(_ sender: Any){

	let imagePicker = UIImagePickerController()
	imagePicker.delegate = self
	present(imagePicker, animated: true, completion: nil)
}

@IBAction func pickAnImageFromAlbum(_ sender: Any){
	let imagePicker = UIImagePickerController()
	imagePicker.delegate = self
	imagePicker.sourceType = .photoLibrary
	present(imagePicker, animated: true, completion: nil)
}

cameraButton.isEnabled = UIImagePickerController.isSourceTypeAvailable(.camera)
let memeTextAttributes:[String:Any] = [
	NSStrokeColorAttributeName:
	NSForegroundColorAttributeName:
	NSFontAttributeName: UIFont(name: "HelveticaNeue-CondenseBlack", size: 40)!,
	NSStrokeWidthAttributeName:
]
override func viewWillAppear(_ animated: Bool){
	super.viewWillAppear(animated)
	subscribeTokeyboardNotifications()
}

override func viewWillDisappear(_ animated: Bool){
	super.viewWillDisappear(animated)
	unsubscribeFromKeyboardNotifications()
}

func subscribeToKeyboardNotifications(){
	NotificationCenter.default.addObserver(self, selector: #selector(keboardWillShow(_:)), name: .UIKey)
}

func keyboardWillShow(_ notification:Notification){
	view.frame.origin.y -= getKeyboardHeight(notification)
}

func getKeyboardHeight(_ notification:Notification) -> CGFloat{
	let userInfo = notification.userInfo
	let keyboardSize = userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue
	return keyboardSize.cgRectValue.height
}

Preparing the incoming ViewController

Code: No segue
Code & Segue: Segue is created in Storyboard, action is invoked in code
Seque: No code. set up completely in Storyboard

CurrentVC -> prepareForSeque -> NextVC

override func prepare(for seque: UIStoryboardSegue, sender: Any?)

	if segue.identifier == "rollDice"{
		let controller = segue.destination as! DiceViewController

		controller.firstValue = randomDiceValue()
		controller.secondValue = randomDiceValue()
	}
self.textField1.delegate = emojiDelegate
self.textField2.delegate = colorizerDelegate
self.textField3.delegate = self
@IBAction func pickAnImage(_ sender: Any){

	let imagePicker = UIImagePickerController()
	imagePicker.delegate = self
	present(imagePicker, animated: true, completion: nil)
}

RollViewController

import UIKit

class RollViewController: UIViewController {

	func randomDiceValue() -> Int {
		let randomValue = 1 + arc4random() % 6

		return Int(randomValue)
	}

	@IBAction func rollTheDice(){

		var controller:DiceViewController
		controller = self.storyboard?.instantiateViewControllerWithIdentifier("DiceViewController") as!
		DiceViewController

		controller.firstValue = self.randomDiceValue()
		controller.secondValue = self.randomDiceValue()

		self.presentViewController(controller, animated: true, completion: nil)
	}
}

Presenting the Dice View

import UIKit

class RollViewController: UIViewController {

	func randomDiceValue() -> Int {

		let randomValue = 1 + arc4random() % 6

		return Int(randomDiceValue) 
	}

	@IBAction func rollTheDice(){
		
	}
}
@IBAction func rollTheDice(){

	let controller: DiceViewController
	controller = storyboard?.instantiateViewController(withIdentifier: "DiceViewController") as! DiceViewController

	controller.firstValue = randomDiceValue()
	controller.secondValue = randomDiceValue()

	present(controller, animated: true, completion: nil)
}

Storyboard

import UIKit

class ViewController: UIViewController {

	var count = 0
	var label:UILabel!

	func incrementCount(){
		self.count++
		self.label.text = "\(self.count)"
	}
}
import UIKit

class ViewController: UIViewController {

	@IBOutlet weak var colorView: UIView!
	@IBOutlet weak var redControl: UISwitch!
	@IBOutlet weak var greenControl: UISwitch!
	@IBOutlet weak var blueControl: UISwitch!

	override func viewDidLoad(){
		super.viewDidLoad()
	}

	@IBAction func changeColorComponent(sender: AnyObject){
		let r: CGFloat = self.redControl.on ? 1:0
		let g: CGFloat = self.greenControl.on ? 1:0
		let b: CGFloat = self.blueControl.on ? 1 : 0

		colorView.backgroundColor = UIColor(red: r, green: g, blue: b, alpha:1)
	}
}
@IBAction func experiment(){
	let nextController = UIImagePickerController()
	self.presentViewController(nextController, animated: true, completion:nil)
}

Map

1.Outlets and Actions
2.Presenting View Controllers
3.The Delegate Pattern
4.Tables
5.Navigation
6.MemeMe Techniques

Clike counter
ViewController -> UIViewm UILabel, UIButton

import UIKit

class ViewController: UIViewController {
	override func viewDidLoad(){
		super.viewDidLoad()
		var label = UILabel()
		label.frame = CGRectMake(150, 150, 60, 60)
		label.text = "0"

		self.view.addSubview(label)

		var button = UIButton()
		button.frame = CGRectMake(150, 250, 60, 60)
		button.setTitle("click", forState: .Normal)
		button.setTitleColor(UIColor.blueColor(), forState: .Normal)
		self.view.addSubview(button)
	}
}
import UIKit

class ViewController: UIViewController {

	var count = 0
	var label:UILabel!

	override func viewDidLoad(){
		super.viewDidLoad()
		var label = UILabel()
		label.frame = CGRectMake(150, 150, 60, 60)
		label.text = "0"

		self.view.addSubview(label)
		self.label = label

		var button = UIButton()
		button.frame = CGRectMake(150, 250, 60, 60)
		button.setTitle("click", forState: .Normal)
		button.setTitleColor(UIColor.blueColor(), forState: .Normal)
		self.view.addSubview(button)

		button.addTarget(self, action: "incrementCount", forControlEvents:
			UIControlEvents.TouchUpInside)
	}
	func incrementCount(){
		self.count++
		self.label.text = "\(self.count)"
	}
}

latitude

latitude
https://www.esrl.noaa.gov/gmd/grad/solcalc/

Shadows and Trigonometry
18m, 10m, β
β = arctan(18/10) in degrees = 60.9°

w = 25m / tan(1.3°) = 1101m

MC = 40,000Km / 3.68, MC = 10,900K

distance to the moon
10900 = πd
d = 3470km
tan(0.5°)=3470 / L
L = 3470 / tan(0.5) = 398,000 km

distance to the sun
cos α = 400,000/L
L = 400,000/ cos89.853°
L = 156,000,000 km