Developing iPhone Apps with SwiftUI – 03 Displaying Desired Images on Screen

In this course, we will take a detailed look at how to display images on the screen in an iPhone app using SwiftUI. SwiftUI is Apple’s latest UI framework that allows developers to build user interfaces in a more intuitive and declarative way. The course will be divided into the following main topics.

  • Understanding the basic concepts of SwiftUI
  • How to use the Image view
  • How to add images to your app
  • Utilizing various image options
  • Dynamic image handling

Understanding the basic concepts of SwiftUI

The core concept of SwiftUI is ‘declarative programming’. By explicitly declaring the elements that compose the UI in code, developers can maintain consistency between the code and the UI. The main component of SwiftUI is the View. All UI elements are based on View, allowing developers to write lightweight and concise code.

In general, SwiftUI defines each view using struct. For example, the code below shows how to create a simple text view:

struct ContentView: View {
        var body: some View {
            Text("Hello, SwiftUI!")
        }
    }

How to use the Image view

To display images in SwiftUI, you use the Image view. The Image view provides a very straightforward way to display image files on the screen. By default, the Image view references images that are included in the app bundle for display.

Here is a basic example of using the Image view:

struct ContentView: View {
        var body: some View {
            Image("exampleImage")
                .resizable()
                .aspectRatio(contentMode: .fit)
        }
    }

In the example above, the resizable() method allows the image to be resized, and aspectRatio(contentMode: .fit) displays the image in a visually pleasing way while maintaining its aspect ratio.

How to add images to your app

Adding images to an Xcode project is very simple. You just need to drag and drop the image files into the Assets.xcassets folder in Xcode. Each image you want to use should be saved with an appropriate name so that it can be referenced later in the Image view.

When adding images in Xcode, you can prepare images at various resolutions, such as 1x, 2x, 3x, to provide optimized images for the screen resolutions of Apple devices. By adding high-resolution image files, you can ensure clearer images even on low-resolution devices.

Utilizing various image options

The Image view in SwiftUI allows you to manipulate images through various modifiers. For example, you can add color effects or create borders. The following example shows how to add a border and shadow to an image:

struct ContentView: View {
        var body: some View {
            Image("exampleImage")
                .resizable()
                .aspectRatio(contentMode: .fit)
                .frame(width: 200, height: 200)
                .cornerRadius(10)
                .shadow(radius: 10)
        }
    }

Additionally, you can handle dynamic images such as GIFs or animations. While you can use UIImageView from UIKit to display these images, SwiftUI makes it easy to handle animations.

Dynamic image handling

Handling dynamic images is particularly important for enhancing user experience in apps. For example, you can implement features that download images from the network or display images selected by the user.

Here, we will explain a basic method to download images from the network. We use URLSession to download images asynchronously, and once the download is complete, we update it to SwiftUI’s state:

import SwiftUI

    struct ContentView: View {
        @State private var image: Image?

        var body: some View {
            VStack {
                if let image = image {
                    image
                        .resizable()
                        .aspectRatio(contentMode: .fit)
                } else {
                    Text("Loading image...")
                }
            }
            .onAppear {
                loadImage()
            }
        }

        func loadImage() {
            guard let url = URL(string: "https://example.com/image.jpg") else { return }
            URLSession.shared.dataTask(with: url) { data, response, error in
                if let data = data, let uiImage = UIImage(data: data) {
                    image = Image(uiImage: uiImage)
                }
            }.resume()
        }
    }

In the above code, the loadImage() method asynchronously downloads the image, and by using SwiftUI’s @State property, the view updates automatically when the image is loaded.

Conclusion

Through this course, you have learned how to utilize the image view in iPhone app development using SwiftUI. We explored a wide range of topics, starting from the basic usage of the Image view to how to add images to your app, utilize various options, and handle dynamic images. SwiftUI is a powerful yet flexible UI tool, which will greatly aid your app development. Please continue to explore the various features of SwiftUI.

In the next course, we will cover how to handle user interactions in SwiftUI. Stay tuned!