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
}
Month: June 2017
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)
}
Launch Activity View
import UIKit
class ViewController: UIViewController {
override func viewDidLoad(){
super.viewDidLoad()
}
@IBAction func experiment(){
let image = UIImage()
let controller = UIActivityViewController(activityItems: [image],
applicationActivities: nil)
self.presentViewController(controller, animated: true, completion:nil)
}
}
@IBAction func experiment(_ sender: Any){
let nextController = UIImagePickerController()
self.present(nextController, animated: true, completion: nil)
}
@IBAction func experiment(_ sender: Any){
let image = UIImage()
let controller = UIActivityViewController(activityItems: [image],
self.present(controller, animated: true, completation: nil))
}
import UIKit
class DiceViewController: UIViewController {
var firstValue: Int?
var secondValue: Int?
@IBOutlet var firstDie: UIImageView!
@IBOutlet var secondDie: UIImageView!
override func viewWillAppear(animated: Bool){
if let firstValue = self.firstValue {
self.firstDie.image = UIImage(named: "d\(firstValue)")
} else {
self.firstDie.image = nil;
}
if let secondValue = self.secondValue {
self.secondDie.image = UIImage(named: "d\(secondValue)")
} else {
self.secondDie.image = nil
}
self.firstDie.alpha = 0
self.secondDie.alpha = 0
}
}
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)"
}
}
Implementation Steps
Name, Service, Conditions, Event Handler
Name:makeUppercase, Realtime Database, Trigger on specific path, makeUppercase handler
const functions = require('firebase-functions');
exports.emojify = functions.database.ref('/messages/{pushId}/text')
.onWrite(event => {
if(!event.data.val()|| event.data.previous.val()){
console.log("not a new write event");
return;
}
console.log("emojifying");
const originalText = event.data.val();
const emojifiedText = emojifyText(originalText);
return event.data.ref.set(emojifiedText);
});
function emojifyText(text){
var emojifiedText = text;
emojifiedText = emojifiedText.replace(/\blob\b/id, "");
emojifiedText = emojifiedText.replace(/\blob\b/id, "");
return emojifiedText;
}
FirebaseUI Authentication
Adding Sign In
-Email/Password
-Google
-Facebook
-Twitter
-GitHub
mPhotoPickerButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(Intent.createChooser(intent, "Complete action using"), RC_PHOTO_PICKER);
}
});
service firebase.storage {
match /b/friendlychat-12987.appspot.com/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}
match /funGifs/cats/{catPics=**}
resource: existing storage data
request: incoming request data
allow read: if request.auth != null && imageId.matches(“.*.gif”)
String name = "Firebase":
name = 3;
var name = "Firebase";
name = 3;
final x = 42;
x = 1024;
const x = 42;
x = 1024
var x = 42;
var y = 1024;
System.out.println("Message");
Log.d(TAG, "Message");
public int multiply(int a, int b){
return a * b;
}
String[] list = {"apple", "pear", "orange"};
for (int i = 0; i < list.length; i++){
System.out.println(list[i])
}