Monday, August 1, 2022
HomeiOS DevelopmentUtilizing ImageRenderer to Convert SwiftUI Views into Pictures

Utilizing ImageRenderer to Convert SwiftUI Views into Pictures


ImageRenderer is one other new API for SwiftUI that comes with iOS 16. It permits you to simply convert any SwiftUI views into a picture. The implementation may be very easy. You instantiate an occasion of ImageRenderer with a view for the conversion:

You’ll be able to then entry the cgImage or uiImage property to retrieve the generated picture.

As all the time, I like to reveal the utilization of an API with an instance. Earlier, we’ve constructed a line chart utilizing the brand new Charts framework. Let’s see tips on how to let customers save the chart as a picture within the picture album and share it utilizing ShareLink.

Revisit the Chart View

swiftui-line-chart

First, let’s revisit the code of the ChartView instance. We used the brand new API of the Charts framework to create a line chart and show the climate information. Right here is the code snippet:

To make use of ImageRenderer, we first refactor this piece of code right into a separate view like this:

Subsequent, we declare a variable to carry the view:

Changing the View into an Picture utilizing ImageRenderer

Now we’re able to convert the chart view into a picture. We are going to add a button named Save to Pictures for saving the chart view picture within the picture album.

Let’s implement the button like this:

Within the closure of the button, we create an occasion of ImageRenderer with chartView and get the rendered picture by utilizing the uiImage property. Then we name UIImageWriteToSavedPhotosAlbum to save lots of the picture to the picture album.

Observe: You could add a key named Privateness – Picture Library Utilization Description within the data.plist earlier than the app can correctly save a picture to the built-in picture album.

Including a Share Button

swiftui-share-imagerenderer

Earlier, you discovered tips on how to use ShareLink to current a share sheet for content material sharing. With ImageRenderer, you’ll be able to simply construct a perform for customers to share the chart view.

For comfort goal, let’s refactor the code for picture rendering right into a separate methodology:

The generateSnapshot methodology converts the chartView into a picture.

Observe: If you’re new to @MainActor, you’ll be able to take a look at this text.

With this helper methodology, we will create a ShareLink like this within the VStack view:

Now if you faucet the Share button, the app captures the road chart and allows you to share it as a picture.

swiftui-weather-chart-imagerenderer

Adjusting the Picture Scale

You might discover the decision of the rendered picture is a bit low. The ImageRenderer class has a property named scale so that you can regulate the dimensions of the rendered picture. By default, its worth is ready to 1.0. To generate a picture with the next decision, you’ll be able to set it to 2.0 or 3.0. Alternatively, you’ll be able to set the worth to the dimensions of the display:

Abstract

The ImageRenderer class has made it very simple to transform any SwiftUI views into a picture. In case your app helps iOS 16 or up, you need to use this new API to create some handy options on your customers. Apart from rendering photographs, ImageRenderer additionally allows you to render a PDF doc. You’ll be able to discuss with the official documentation for additional particulars.

For charts, Apple additionally comes with a extra particular renderer referred to as ChartRenderer for exporting a chart as a picture. Later, we are going to additional look into this class.


Founding father of AppCoda. Writer of a number of iOS programming books together with Starting iOS Programming with Swift and Mastering SwiftUI. iOS App Developer and Blogger. Comply with me at Fb, Twitter and Google+.



RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular