ios decal : lecture 2akile.sh/iosdecal_spring17/lectures/lecture2.pdf · ios decal: lecture 2...
TRANSCRIPT
![Page 1: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/1.jpg)
iOS DeCal : Lecture 2Structure of iOS Applications:
MVC and Auto Layout
![Page 2: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/2.jpg)
Model View Controller Design Pattern
Creating Views in Storyboard
Connecting your Views to Code
Auto Layout
Overview : Today’s Lecture
![Page 3: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/3.jpg)
- Enroll in the Course! - enroll through CalCentral (you will not be automatically
enrolled in the course) - CCN and more info can found on Piazza
- Sign in on Piazza! - No Lecture next week (still meeting for Lab on 2/16) - Lab 1 is due TONIGHT if you did not get checked off
- Submit via Gradescope - We will not be able to post grades for Lab 1 on
GradeScope, but will for future labs - Attendance Google Sheet?
Announcements
![Page 4: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/4.jpg)
Model View Controller
![Page 5: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/5.jpg)
Software Design Patterns are reusable solutions to common problems in software design
Main Idea: Assign objects in your application distinct roles using well-defined patterns and object relationships
There are many different types of patterns (not just basic MVC)!
Overview : Software Design Patterns
![Page 6: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/6.jpg)
Common Design Pattern in Cocoa Applications Assigns objects in your application one of the following distinct roles:
Model - encapsulates data and defines logic / computations
View - what the users see and interact with
Controller - intermediary between models and views
Model View Controller (MVC)
![Page 7: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/7.jpg)
Model
Controller
View
User Action
Update
Update
Notify
Model View Controller
![Page 8: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/8.jpg)
Model
Controller
View
User interacts with View (eg user taps “=“ button in calculator)
Example User taps a button
![Page 9: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/9.jpg)
Model
Controller
View
User Action
Controller is notified that the user has made an action
Example User taps a button
![Page 10: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/10.jpg)
Model
Controller
View
User Action Update
Controller updates the Model to reflect the users change
Example User taps a button
![Page 11: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/11.jpg)
Model
Controller
View
User Action Update
Notify
Model stores info / calculates then notifies controller of result
Example User taps a button
![Page 12: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/12.jpg)
Notice how there is no direct connection from Model to View!
Controller
View Model
User Action
Update
Update
Notify
![Page 13: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/13.jpg)
Issue #1 : Breaking Model / View Abstraction
Controller
View Model
User Action
Update
Update
Notify
Common Design issues
![Page 14: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/14.jpg)
Issue #2 : Bloated Controllers
Controller
View
User Action
Common Design issues
![Page 15: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/15.jpg)
Issue #2 : Bloated Controllers
Controller
View
User Action
Common Design issues
![Page 16: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/16.jpg)
MVC in iOS / Xcode
![Page 17: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/17.jpg)
Model : data, logic, and computation
To Create New > File > Swift
![Page 18: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/18.jpg)
View (Interface Builder) : What the user sees
In Storyboard - create views from the Object Library
![Page 19: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/19.jpg)
View (Programmatic) : what the users see
Creating views programmatically
New > File > Cocoa Touch Class. Then subclass an
existing type of View
![Page 20: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/20.jpg)
Controllers in Xcode > View Controllers
![Page 21: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/21.jpg)
Creating a Custom View Controller
(Interface Builder)
![Page 22: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/22.jpg)
Create a View Controller Class for your custom View Controller
Creating View Controllers : Step 1
To create New > File > Cocoa Touch Class. Then subclass an existing View Controller
![Page 23: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/23.jpg)
Drag a View Controller from your Object Library into your Storyboard
Creating View Controllers : Step 2
Open Main.storyboard, and navigate to the Object Library
Drag a View Controller onto your Storyboard
![Page 24: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/24.jpg)
Set the View Controller’s class to the custom class you created in Step 1 (don’t forget this step)!
Creating View Controllers : Step 3
Change the Class field (found in the Identity Inspector) from
ViewController to your custom View Controller’s name
Tap on your View Controller in the
Storyboard, then open the Identity Inspector
![Page 25: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/25.jpg)
Creating View Controllers : Step 4
Your new View Controller is all
set to go!
Now you can start adding views from the Object
Library and customizing your View.
Search for specific objects in the Filter Search Bar
![Page 26: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/26.jpg)
Control + Drag to connect UI elements in Storyboard to your code
Control Drag in Interface Builder
![Page 27: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/27.jpg)
Control Drag : Outlets
Pressing Connect generates an Outlet (linked to your storyboard)
![Page 28: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/28.jpg)
Control Drag : ActionsIf you want your UI element to DO something when tapped, highlighted, changed, etc. create an Action
Example: UIButton
Start by Control + Dragging from button your code (just as you would with an Outlet)
![Page 29: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/29.jpg)
Control Drag : Actions
Set the Connection type to Action and Type (it’s referring to Sender Type) to UIButton
Other values should default to the ones shown above.
![Page 30: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/30.jpg)
Control Drag : ActionsPressing connect will generate a method for you in your file that will be called every time the user taps your button.
![Page 31: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/31.jpg)
Control Drag : ActionsPressing connect will generate a method for you in your file that will be called every time the user taps your button.
You can access the button itself by modifying sender
@IBAction func buttonWasPressed(_ sender: UIButton) { // add your own code here!
}
![Page 32: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/32.jpg)
Control Drag : ActionsPressing done will generate a method for you in your file that will be called every time the user taps your button.
You can access the button itself by modifying sender
@IBAction func buttonWasPressed(_ sender: UIButton) { // add your own code here! sender.setTitle("Button was tapped!”,for: .normal)
}
![Page 33: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/33.jpg)
Avoid adding too much to View Controllers!With more complicated UI’s, you’ll end up having lots of outlets, actions, and view customization code
Instead of sticking this all in your View Controller, subclass views as well (i.e. make your own CustomButton rather than doing all your UI work in your view controllers)
![Page 34: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/34.jpg)
Avoid adding too much to View Controllers!With more complicated UI’s, you’ll end up having lots of outlets, actions, and view customization code
Instead of sticking this all in your View Controller, subclass views as well (i.e. make your own CustomButton rather than doing all your UI work in your view controllers)
![Page 35: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/35.jpg)
DemoViews, View Controllers, Outlets, Actions
![Page 36: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/36.jpg)
Check-in
![Page 37: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/37.jpg)
Autolayout
![Page 38: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/38.jpg)
• Display your app on different screen sizes
• Optimize for different resolutions
• Internationalize your UI (Localization)
• Resize/layout elements for device rotations
Adaptive UI
![Page 39: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/39.jpg)
• Constraint based, descriptive layout system • Creating an adaptive interface that responds to
changes in screen size and device orientation
What is Auto Layout
What is a Constraint• Linear equations that relate
different objects parts with one another.
![Page 40: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/40.jpg)
• Control + Drag from view to other view
• In Code: • Layout anchors:
• NSLayoutAnchor • NSLayoutConstraint
Creating Constraints
let constraint = view1.leadingAnchor.constraint( equalTo: view2.trailingAnchor, constant: 8)
constraint.isActive = true
![Page 41: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/41.jpg)
Creating Constraints : The Philosophy
View
1. X Position 2. Y Position 3. Height 4. Width
![Page 42: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/42.jpg)
• Xcode will let you know if you’re missing a constraint
• Constraints will turn red • Preview feature let’s you
test your work
Missing Constraints
![Page 43: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/43.jpg)
![Page 44: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/44.jpg)
• Alignment • Align Objects with
each other
• Pin • Adds space to nearest
neighbor (Can be a superview or itself)
Types of Constraints
![Page 45: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/45.jpg)
• Height - Height of View • Width - Width of View • Top - Vertical Spacing to Top View • Bottom - Vertical Spacing to Bottom View • Baseline - Align Baseline • Leading - Spacing to Left View • Trailing - Spacing to Right View • Center X - Center Align Horizontally • Center Y - Center Align Vertically
List of Constraint Types
![Page 46: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/46.jpg)
• Item 1 • Attribute 1 • Relationship • Multiplier • Item 2 • Attribute 2 • Constant
Formal Constraint Properties
![Page 47: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/47.jpg)
![Page 48: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/48.jpg)
Demo
![Page 49: iOS DeCal : Lecture 2akile.sh/iosdecal_spring17/Lectures/Lecture2.pdf · iOS DeCal: Lecture 2 Structure of iOS Applications: MVC and Auto Layout. Model View Controller Design Pattern](https://reader033.vdocument.in/reader033/viewer/2022050205/5f58502c91136143c24fc8b0/html5/thumbnails/49.jpg)
Next Lab : Auto Layout Confused on AutoLayout? More Info Here
No Lecture next week (will have lab)
Lab 1 : Xcode Tutorial Due Tonight at 11:59pm if you did not
check off during lab