Mobile App Development 2021W Lecture 4
Video
Video from the lecture given on January 20, 2021 is now available.
Notes
Historical articles referenced in class:
Lecture 4
------------
* nested views
* UIkit
* Apple-centered history of GUIs
- mother of all demos (Englebart, 1968)
- Xerox Alto
- Lisa
- Macintosh
- NeXT
- MacOS X
- iPhone
Why not just use HTML/CSS everywhere, instead of SwiftUI?
- because then you need an entire web renderer to create the interface!
- web rendering engines are BEASTS
- only 3 left
Webkit (Apple)
Blink (Google, fork of Webkit)
Gecko (Mozilla)
Microsoft had Trident, but they gave up and adopted Blink for Edge
UIkit is for iOS, AppKit is for MacOS
- storyboard is the way you make these interfaces
SwiftUI is for both MacOS and iOS
SwiftUI is really a domain-specific language for building interfaces,
built using Swift
- some rules of regular swift apply, but many don't
- really need to switch modes when doing SwiftUI
- only use SwiftUI components in Views, not elsewhere
Code
//
// ContentView.swift
// Shared
//
// Created by Anil Somayaji on 2021-01-19.
//
import SwiftUI
struct ContentView: View {
@State private var Fs = ""
var body: some View {
VStack{
Text("Temperature Converter")
.font(.title)
.fontWeight(.bold)
.padding()
Spacer()
TextField("Enter Farenheit", text: $Fs)
SubView(Fs: $Fs)
Spacer()
}
}
}
struct SubView: View {
@Binding var Fs: String
var body: some View {
if let F = Double(Fs) {
let C = (F - 32.0) * (5/9)
let Cs = String(format: "%0.2f", C)
Text("\(Fs) is \(Cs) Celsius")
let K = C + 273.15
let Ks = String(format: "%0.2f", K)
Text("\(Fs) is \(Ks) Kelvin")
} else {
Text("Enter a number please.")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}