{"product_id":"swiftui-for-dummies-isbn-9781119652687","title":"SwiftUI For Dummies","description":"\u003cp\u003e\u003cb\u003eThe simplest way to create world-class apps\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eHave a unique app idea but worried you don't quite have the coding skills to build it? Good news: You can stop fretting about someone beating you to market with the same idea and start work right now using SwiftUI. SwiftUI is a gateway app development framework that has become one of the best ways for fledgling developers to get iOS apps off the ground without having to become a coding expert overnight.\u003c\/p\u003e \u003cp\u003e\u003ci\u003eSwiftUI For Dummies\u003c\/i\u003e makes that process even faster, providing a friendly introduction to the SwiftUI and Swift programming language and helping you feel right at home creating and building with playgrounds. The book also covers the frameworks and APIs that make it so easy to create smooth, intuitive interfaces—just dive right in and have fun!\u003c\/p\u003e \u003cul\u003e \u003cli\u003eCombine projects into workspaces\u003c\/li\u003e \u003cli\u003eEmploy Xcode editing tools\u003c\/li\u003e \u003cli\u003eUse constants and variables\u003c\/li\u003e \u003cli\u003eTest your code on iOS Simulator\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003eTime is of the essence, and with \u003ci\u003eSwiftUI For Dummies,\u003c\/i\u003e it's also on your side. Get going with this friendly guide today, and you'll be celebrating the successful launch of your app way before you thought possible!\u003c\/p\u003e \u003cp\u003e\u003cb\u003eIntroduction\u003c\/b\u003e\u003cb\u003e 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAbout This Book 1\u003c\/p\u003e \u003cp\u003eFoolish Assumptions 2\u003c\/p\u003e \u003cp\u003eIcons Used in This Book 2\u003c\/p\u003e \u003cp\u003eBeyond the Book 3\u003c\/p\u003e \u003cp\u003eWhere to Go from Here 3\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart 1: Getting Started with Swift and SwiftUI\u003c\/b\u003e\u003cb\u003e 5\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: Introducing SwiftUI \u003c\/b\u003e\u003cb\u003e7\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding What SwiftUI Is 7\u003c\/p\u003e \u003cp\u003eGetting the Tools 11\u003c\/p\u003e \u003cp\u003eHello, SwiftUI 12\u003c\/p\u003e \u003cp\u003eAutomatically previewing your user interface using the canvas 14\u003c\/p\u003e \u003cp\u003eWorking with Live Preview 18\u003c\/p\u003e \u003cp\u003eGenerating different previews 19\u003c\/p\u003e \u003cp\u003eThe Gory Details 21\u003c\/p\u003e \u003cp\u003eInfo plist 22\u003c\/p\u003e \u003cp\u003eAppDelegate swift 22\u003c\/p\u003e \u003cp\u003eSceneDelegate swift 23\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Basics of the Swift Programming Language\u003c\/b\u003e\u003cb\u003e 25\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBasic Swift Syntax 26\u003c\/p\u003e \u003cp\u003eConstants 26\u003c\/p\u003e \u003cp\u003eVariables 27\u003c\/p\u003e \u003cp\u003eStrings 27\u003c\/p\u003e \u003cp\u003eComments 27\u003c\/p\u003e \u003cp\u003eBasic Data Types 28\u003c\/p\u003e \u003cp\u003eIntegers 28\u003c\/p\u003e \u003cp\u003eFloating-point numbers 29\u003c\/p\u003e \u003cp\u003eBooleans 29\u003c\/p\u003e \u003cp\u003eTuples 30\u003c\/p\u003e \u003cp\u003eArrays 30\u003c\/p\u003e \u003cp\u003eRetrieving elements from an array 31\u003c\/p\u003e \u003cp\u003eInserting elements into an array 31\u003c\/p\u003e \u003cp\u003eModifying elements in an array 31\u003c\/p\u003e \u003cp\u003eAppending elements to an array 31\u003c\/p\u003e \u003cp\u003eRemoving elements from an array 32\u003c\/p\u003e \u003cp\u003eDictionaries 32\u003c\/p\u003e \u003cp\u003eRetrieving elements from a dictionary 32\u003c\/p\u003e \u003cp\u003eModifying an item in a dictionary 33\u003c\/p\u003e \u003cp\u003eRemoving an item from a dictionary 33\u003c\/p\u003e \u003cp\u003eOptional Types 33\u003c\/p\u003e \u003cp\u003eWorking with implicitly unwrapped optionals 35\u003c\/p\u003e \u003cp\u003eUsing optional binding 36\u003c\/p\u003e \u003cp\u003eUnwrapping optionals using “?” 36\u003c\/p\u003e \u003cp\u003eUsing the nil coalescing operator 37\u003c\/p\u003e \u003cp\u003eFunctions 38\u003c\/p\u003e \u003cp\u003eUnderstanding input parameters 38\u003c\/p\u003e \u003cp\u003eReturning a value 39\u003c\/p\u003e \u003cp\u003eFlow Control 39\u003c\/p\u003e \u003cp\u003eIf-Else statement 40\u003c\/p\u003e \u003cp\u003eTernary conditional operator 40\u003c\/p\u003e \u003cp\u003eSwitch statement 40\u003c\/p\u003e \u003cp\u003eLooping 41\u003c\/p\u003e \u003cp\u003eFor-In loop 42\u003c\/p\u003e \u003cp\u003eWhile loop 42\u003c\/p\u003e \u003cp\u003eRepeat-While loop 42\u003c\/p\u003e \u003cp\u003eControl transfer statements 42\u003c\/p\u003e \u003cp\u003eRange operators 43\u003c\/p\u003e \u003cp\u003eStructures 43\u003c\/p\u003e \u003cp\u003eMemberwise initializers 44\u003c\/p\u003e \u003cp\u003eStructures as value types 45\u003c\/p\u003e \u003cp\u003eClasses 47\u003c\/p\u003e \u003cp\u003eDefining a class 47\u003c\/p\u003e \u003cp\u003eUnderstanding properties 47\u003c\/p\u003e \u003cp\u003eUsing methods in classes 49\u003c\/p\u003e \u003cp\u003eTrying out the self property 50\u003c\/p\u003e \u003cp\u003eClosures 51\u003c\/p\u003e \u003cp\u003eUnderstanding closures 51\u003c\/p\u003e \u003cp\u003eUsing functions as closures 52\u003c\/p\u003e \u003cp\u003eAssigning closures to variables 52\u003c\/p\u003e \u003cp\u003eWriting closures inline 53\u003c\/p\u003e \u003cp\u003eUnderstanding type inference 53\u003c\/p\u003e \u003cp\u003eUsing shorthand argument names 54\u003c\/p\u003e \u003cp\u003eWorking with the operator function 54\u003c\/p\u003e \u003cp\u003eUsing trailing closures 55\u003c\/p\u003e \u003cp\u003eProtocols 55\u003c\/p\u003e \u003cp\u003eDefining and using a protocol 56\u003c\/p\u003e \u003cp\u003eConforming to a protocol 56\u003c\/p\u003e \u003cp\u003eUsing the Codable protocol 57\u003c\/p\u003e \u003cp\u003eUsing the some keyword 59\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart 2: Understanding the Basics of SwiftUI\u003c\/b\u003e\u003cb\u003e 61\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Getting Started with the Basics of SwiftUI\u003c\/b\u003e\u003cb\u003e 63\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eTaking a Look at SwiftUI Views 63\u003c\/p\u003e \u003cp\u003eConforming to the View protocol 64\u003c\/p\u003e \u003cp\u003eUsing modifiers 66\u003c\/p\u003e \u003cp\u003eStacking modifiers 66\u003c\/p\u003e \u003cp\u003eUsing the Inspector 67\u003c\/p\u003e \u003cp\u003eDisplaying an Image 70\u003c\/p\u003e \u003cp\u003eUsing modifiers on the Image view 72\u003c\/p\u003e \u003cp\u003eResizing images 73\u003c\/p\u003e \u003cp\u003eDisplaying a Button 75\u003c\/p\u003e \u003cp\u003eCustomizing the button 76\u003c\/p\u003e \u003cp\u003eAdding actions 77\u003c\/p\u003e \u003cp\u003eStacking the Views 78\u003c\/p\u003e \u003cp\u003eVStack 79\u003c\/p\u003e \u003cp\u003eHStack 80\u003c\/p\u003e \u003cp\u003ePutting on the Finishing Touches 85\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Handling User Inputs and Custom Views \u003c\/b\u003e\u003cb\u003e87\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eLooking at Input Views 87\u003c\/p\u003e \u003cp\u003eTextField 88\u003c\/p\u003e \u003cp\u003eSecureField 92\u003c\/p\u003e \u003cp\u003eToggle 93\u003c\/p\u003e \u003cp\u003eSlider 94\u003c\/p\u003e \u003cp\u003eStepper 98\u003c\/p\u003e \u003cp\u003ePicker 100\u003c\/p\u003e \u003cp\u003eComposing Custom Views 103\u003c\/p\u003e \u003cp\u003eComposing the custom view 104\u003c\/p\u003e \u003cp\u003eUsing the custom view 111\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Displaying Lists of Items \u003c\/b\u003e\u003cb\u003e113\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing the List View to Display Items 113\u003c\/p\u003e \u003cp\u003eCustomizing the rows 114\u003c\/p\u003e \u003cp\u003eAdding rows programmatically 116\u003c\/p\u003e \u003cp\u003eAlternative way to generate rows in a List view 119\u003c\/p\u003e \u003cp\u003eDisplaying the List within a NavigationView 120\u003c\/p\u003e \u003cp\u003eMaking the items tappable 121\u003c\/p\u003e \u003cp\u003eAdding rows 123\u003c\/p\u003e \u003cp\u003eUsing the Identifiable protocol 125\u003c\/p\u003e \u003cp\u003eDeleting rows 126\u003c\/p\u003e \u003cp\u003eEditing rows 128\u003c\/p\u003e \u003cp\u003eMoving rows 130\u003c\/p\u003e \u003cp\u003eDisplaying Sections 133\u003c\/p\u003e \u003cp\u003eDisplaying sections from a dictionary 134\u003c\/p\u003e \u003cp\u003eChanging the style of the List view 136\u003c\/p\u003e \u003cp\u003ePreviewing in Light and Dark Modes 138\u003c\/p\u003e \u003cp\u003eDuring runtime 138\u003c\/p\u003e \u003cp\u003eDuring design time 139\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6: Creating Navigation and Tabbed Applications\u003c\/b\u003e\u003cb\u003e 143\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCreating Navigation Apps 144\u003c\/p\u003e \u003cp\u003eWorking with the two key views in navigation-style apps 145\u003c\/p\u003e \u003cp\u003eNavigating to a page 148\u003c\/p\u003e \u003cp\u003eNavigating programmatically 149\u003c\/p\u003e \u003cp\u003eCreating a news reader application 151\u003c\/p\u003e \u003cp\u003eCreating Tabbed Applications 167\u003c\/p\u003e \u003cp\u003eUsing the TabView 168\u003c\/p\u003e \u003cp\u003eSelecting TabViews programmatically 169\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7: Formatting Your User Interface\u003c\/b\u003e\u003cb\u003e 173\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eLaying Out Views Using Stacks 173\u003c\/p\u003e \u003cp\u003eVStack 174\u003c\/p\u003e \u003cp\u003eHStack 186\u003c\/p\u003e \u003cp\u003eZStack 190\u003c\/p\u003e \u003cp\u003eUsing Container Views 195\u003c\/p\u003e \u003cp\u003eForm and Section 198\u003c\/p\u003e \u003cp\u003eGroup 200\u003c\/p\u003e \u003cp\u003eDivider 203\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart 3: Exploring with SwiftUI in More Detail\u003c\/b\u003e\u003cb\u003e 205\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8: Understanding State Management in SwiftUI\u003c\/b\u003e\u003cb\u003e 207\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing a Property Wrapper 207\u003c\/p\u003e \u003cp\u003eMaintaining State Using State Variables 209\u003c\/p\u003e \u003cp\u003eBinding State Variables 213\u003c\/p\u003e \u003cp\u003eManaging State from External Objects 218\u003c\/p\u003e \u003cp\u003eUsing the ObservableObject protocol and @Published 219\u003c\/p\u003e \u003cp\u003eUsing the @ObservedObject 221\u003c\/p\u003e \u003cp\u003eSharing Objects 223\u003c\/p\u003e \u003cp\u003eAccessing Built-in Environment Variables 228\u003c\/p\u003e \u003cp\u003eDefining your own environment keys 230\u003c\/p\u003e \u003cp\u003eUsing your own environment keys 231\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9: Using Legacy UIKit Views and View Controllers in SwiftUI\u003c\/b\u003e\u003cb\u003e 235\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing UIKit in SwiftUI 236\u003c\/p\u003e \u003cp\u003eUnderstanding the UIKit View Controller life cycle 237\u003c\/p\u003e \u003cp\u003eUnderstanding the SwiftUI view life cycle 239\u003c\/p\u003e \u003cp\u003eUsing the UIViewRepresentable Protocol for UIKit Views 247\u003c\/p\u003e \u003cp\u003eActivityIndicator 248\u003c\/p\u003e \u003cp\u003eWebView 251\u003c\/p\u003e \u003cp\u003eUsing the UIViewControllerRepresentable Protocol for UIKit View Controllers 253\u003c\/p\u003e \u003cp\u003eCreating the ImagePickerViewController 254\u003c\/p\u003e \u003cp\u003eHandling events using coordinators 256\u003c\/p\u003e \u003cp\u003eDefining the methods in the Coordinator class 258\u003c\/p\u003e \u003cp\u003eUsing the updated ImagePickerViewController 260\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart 4: Performing Animations and Drawings\u003c\/b\u003e\u003cb\u003e 263\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10: Drawings and Special Effects\u003c\/b\u003e\u003cb\u003e 265\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDrawing Using the Five Built-in Shapes 266\u003c\/p\u003e \u003cp\u003eRectangles 266\u003c\/p\u003e \u003cp\u003eRounded rectangles 270\u003c\/p\u003e \u003cp\u003eCircles 273\u003c\/p\u003e \u003cp\u003eCapsules 274\u003c\/p\u003e \u003cp\u003eEllipses 275\u003c\/p\u003e \u003cp\u003eClipping with the Basic Shapes 277\u003c\/p\u003e \u003cp\u003eDrawing Custom Shapes 281\u003c\/p\u003e \u003cp\u003eDrawing lines 283\u003c\/p\u003e \u003cp\u003eFilling the shape 284\u003c\/p\u003e \u003cp\u003eDrawing a border 286\u003c\/p\u003e \u003cp\u003eDrawing an arc 287\u003c\/p\u003e \u003cp\u003eCombining fill and stroke 289\u003c\/p\u003e \u003cp\u003eUsing Special Effects in SwiftUI 292\u003c\/p\u003e \u003cp\u003eBlend modes 292\u003c\/p\u003e \u003cp\u003eBlurs 297\u003c\/p\u003e \u003cp\u003eSaturation 298\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 11: Performing Animations in SwiftUI\u003c\/b\u003e\u003cb\u003e 299\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding How to Animate 299\u003c\/p\u003e \u003cp\u003eSpecifying the type of animation 303\u003c\/p\u003e \u003cp\u003eRepeating the animation 303\u003c\/p\u003e \u003cp\u003eStopping the animation 304\u003c\/p\u003e \u003cp\u003ePerforming Your Own Animation 307\u003c\/p\u003e \u003cp\u003eRotating in 2D 307\u003c\/p\u003e \u003cp\u003eRotating in 3D 309\u003c\/p\u003e \u003cp\u003eCreating a Custom Progress Indicator 314\u003c\/p\u003e \u003cp\u003eIndeterminate progress indicator 314\u003c\/p\u003e \u003cp\u003eDeterminate progress indicator 318\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 12: Creating a Complete Project\u003c\/b\u003e\u003cb\u003e 323\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding What the App Does 323\u003c\/p\u003e \u003cp\u003eBuilding the Project 325\u003c\/p\u003e \u003cp\u003eCreating the layouts 325\u003c\/p\u003e \u003cp\u003eDefining the news sources and observable objects 328\u003c\/p\u003e \u003cp\u003eFetching the data 330\u003c\/p\u003e \u003cp\u003eDisplaying the news headlines 331\u003c\/p\u003e \u003cp\u003eDisplaying the images 334\u003c\/p\u003e \u003cp\u003eDisplaying the news 336\u003c\/p\u003e \u003cp\u003eCreating the share sheet 338\u003c\/p\u003e \u003cp\u003eCreating the preferences view 339\u003c\/p\u003e \u003cp\u003ePersisting the user’s preferences 344\u003c\/p\u003e \u003cp\u003eDeploying the App 346\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart 5: The Part of Tens\u003c\/b\u003e\u003cb\u003e 351\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 13: Ten SwiftUI Tips and Tricks\u003c\/b\u003e\u003cb\u003e 353\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eResuming Live Preview 353\u003c\/p\u003e \u003cp\u003eImplementing Localization 354\u003c\/p\u003e \u003cp\u003eCombining Text Views 358\u003c\/p\u003e \u003cp\u003eCreating Custom Modifiers 360\u003c\/p\u003e \u003cp\u003eDisplaying Multiple Alerts 362\u003c\/p\u003e \u003cp\u003eEnabling Debug Preview 363\u003c\/p\u003e \u003cp\u003ePreviewing Using Different Devices 364\u003c\/p\u003e \u003cp\u003eDark Mode Only Works On NavigationView 368\u003c\/p\u003e \u003cp\u003eExtracting Subviews 370\u003c\/p\u003e \u003cp\u003eDisplaying a Context Menu 373\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 14: Ten Great SwiftUI Resources\u003c\/b\u003e\u003cb\u003e 375\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eApple 375\u003c\/p\u003e \u003cp\u003eSwiftUI by Example 376\u003c\/p\u003e \u003cp\u003e100 Days of SwiftUI 376\u003c\/p\u003e \u003cp\u003eGosh Darn SwiftUI 376\u003c\/p\u003e \u003cp\u003eSwiftUI Hub 376\u003c\/p\u003e \u003cp\u003eAwesome SwiftUI 377\u003c\/p\u003e \u003cp\u003eraywenderlich com 377\u003c\/p\u003e \u003cp\u003eSwift Talk 377\u003c\/p\u003e \u003cp\u003eAbout SwiftUI 377\u003c\/p\u003e \u003cp\u003eStack Overflow 378\u003c\/p\u003e \u003cp\u003eAppendix: Code Snippets for Common Swiftui Views 379\u003c\/p\u003e \u003cp\u003eIndex 387\u003c\/p\u003e \u003cp\u003e\u003cb\u003eWei-Meng Lee\u003c\/b\u003e (Singapore) is founder of Developer Learning Solutions, a firm specializing in hands-on training for software developers. He teaches courses in mobile development, blockchain, machine learning, and AI. He is author of a number of books, including \u003ci\u003eBeginning Swift Programming\u003c\/i\u003e (Wiley).\u003c\/p\u003e","brand":"For Dummies","offers":[{"title":"Default Title","offer_id":47990120939749,"sku":"NP9781119652687","price":34.99,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9781119652687.jpg?v=1761786593","url":"https:\/\/k12savings.com\/products\/swiftui-for-dummies-isbn-9781119652687","provider":"K12savings","version":"1.0","type":"link"}