These are my notes about the basic of swift UIKit including storyboard, xib/nib, or 100% programtically
- AutoLayout
- Concepts of UIView
- Difference bwt frame and bounds
- UIView vs CALayer
- ClipToBounds vs masksToBound
- How to clipToBounds work and why subViews are shown when parent view height is set to 0
- Example of using maskToBound, cornerRadius, and Shadow with shadow drawing performance improvement
- How to make corner and shadow for a StackView
- Summary of the conflict between makingCorner and drawShadow
- Custom UIView and its initialized
- NSAttributedString
- UILabel
- Animation, transition, presentation and other visual effect
- Alert
- TableView
- How embed a tableView inside a tableView
- Ways to set custom tableViewCell
- Scroll to certain row
- Scroll not working and causing VC losing data passed by parent VC
- Register custom nib cell into tableView
- Cell Set selected initially
- Error: this_class_is_not_key_value_coding-compliant
- Error: Outlets cannot be connected to repeating content iOS (dynamic prototypes VS static cells)
- Deselecting the table view row when returning
- TextField in tableView
- Tricks of adding simple header and footer to tableView
- TableView with multiple sections and headers for sections
- Customize header and footer
- How to remove the header top padding?
- How to change headView background color like make is transparent for iOS before 15
- Dynamic height for tableView cells, headers and footers
- When to choose UITableViewController vs embeded tableView
- [How to distinguish different tableViews when there are mutiple tableviews in a VC]
- UIButton, ToolBar items, UIGestureRecognizer
- Make ToolBar_Button Item unusable and invisiable
- Why sometime cannot setTitle of button
- How to set the font-weight of nsAttributeString of title of button
- Create a radio button
- Set title text color of UIbutton
- Change line space of title of UIbutton
- Why change button title font size doesn't work?
- Customization: iOS 15: UIButton.configuration
- Padding image, title and subtitle
- Easy but tricky -- UIbuttonImage != UIButtonBackgroundImage -- how to set button title top of an image in button
- How to make UIButton programmatically
- Very misleading -- states of button: selected, hightlighted and normal
- How to set color of title of Button
- How to programmatically add action/gesture to button
- How to add TaPGestureRecoginzer/Action to View or Label. !Note: it should be TapGestureRecg not GestureRec
- (A good tutorial of adding UITapGestureRecognizer) Why the TapGesture not work: issue of building the connection in interface builder
- Why TapGestureRecognizer not work: issue of multiple tapGestrueRecognizers using the same selector functions
- Target and selector of UITapGestureRecognizer
- Capture Touch Events Outside UIView Bounds
- UISegmentControl
- UIPageControl and UIPageViewController
- TextField/TextView
- UIScrollView
- UINavigationController
- Intro
- Official document -- very useful
- QuickStart: setup navVC using storyboard vs programmatically
- Depth: setup navVC
- !!!Configure NavBar Appearance globally and locally
- Customize the Appearance of NavgationBar
- How to configure the title color of navigation bar
- How to set background image of navBar
- How to make a transparent navBar
- Change Title Of UINavgationBar
- Tricky -- Customize the backBarButton
- !Update NavigationBarItem
- How to show image in bar button item as it is
- Replace RootVC of NavigationViewController and configure the navBarItem of new RootVC
- Set UINavVC as the Root VC of the Window/App
- How to run certain code before nav back
- How to pass data through navigation back button
- How to adjust space between two UIBarButtonItem in rightBarButtonItems
- How to display different navifation title for different tabs
- Storyboard and Segue
- Container View Controllers & Container View
- Overview of ContainerViewControllers
- Add and remove childVC programmatically
- When & How to Embed child VC into ContainerView using Storyboard and embeded segues
- Addtional Support & Official Document
- Access child view
- Communication between parent and child view
- youtubeTutorial
- Use Container view to set up the homr view with side menu
- Add container view programmatically
- TabViewController -- another type container view
- Why not recommend to use TabView alone
- [Good architectural design of TabViewController and its associated VCs]
- How to display different navifation title for different tabs
- UISplitViewController
- Files and images
- Play Video & Audio
- Play video locally
- Set size/autolayout of UIView for video
- Cannot find filePath - make sure to add file into bundle
- How to stop playing and replay from beginning
- CMTime
- AddObserver - how to know if video is ready to be player (does not mean it has been fully downloaded)
- How to make playback controller
- How to play forward/backward
- Use google-supported YoutubePlayer SDK
- Select Photos or Take Photos or Scan document
- PDFKit
- Great tutorial
- [How to draw/render vetically]
- [How to render custom UIView in PDF]
- Swift Chart
- [SwiftUI Chart is excellent but only avaiable after iOS 16]
- danielgindi 3rd-party package
- Daneil Chart -- mutiple lines, combinedChartView
- Daneil Chart -- custom legends
- Daneil Chart -- custom axis
- [Integrate SwiftUI in UIKit]
- ViewController and its Hierachy
- Cocoa Touch Class and Nib
- Communication betweeb VCs
- Notification
- Synchronization and asynchronization
- App LifeCycle - AppDelegate & SceneDelegate
- Networking
- Debug and logging
- Special issues
- Swift Grammar
- Strong vs weak
- Auto Reference Counting, retain cycle and memory leaking
- How to debug memory leaking
- Class-type protocol and memory leaking
- Lazy
- Lazy weak vs let
- Configure a property in its initialization
- !!!Struct vs class -- constant data vs constant address
- Access control
- [Array sort]
- Stored Property vs Computed Property(getter&setter) vs Observer(willSet & didSet)
- How to get the name of enumeration value which rawValue is not string
- Tuple
- get absolute value -- abs()
- Cheatsheet of Dictionary -- remove and iterate through
- How append an array after an array
- How to pass an optional function as argument to a function/ how to set feault value of function arg
- What does @escaping means? what is difference bwt it and a function argument
- An excellent tutorial on high-order functions and closure (namely, passing functions as parameters)
- !!![weak self] in
- Higher Order Functions
- Numeral and string
- Xcode Tips
- App Deployment
- Git and version controll
- Core Data
- Add core data model to a created project
- Codegen
- How to integrate Nnum type into Core Data Model
- How to choose integer types, int16, int32, int64
- Configure Attribute of Entity
- How to build relationships (relation exist like another attribute of entity)
- How to loop through a relationship in Core Data
- !!!Deletion rule
- Integrate Enum type into CoreData Entity
- Configure Atribute -- Create Relationship with custom entity
- How to store dictionary in core date
- Saving image in CoreData
- Firebase
- Design Pattern
- [Combine and other reactive programming]
- Learning Resources