Skip to content

Releases: kayak/SwiftFrame

Support for specifying used locales

17 Jul 09:20
a20b9a2
Compare
Choose a tag to compare

You can now specify which locales are used (and which are not). To do so, add a new key locales to your config file with a regular expression to include or exclude locales. See the README for syntax help. If you don't want to clone the repo and compile SwiftFrame yourself, you can also download the attached, pre-compiled binary.

Binary checksum: beb87c56190e3f814ad807c0857494c90a710cb48e5ded38219a5c85f864c5b1
(use shasum -a 256 path/to/swiftframe/binary to verify)

Only verify screenshots which are actually used

08 Jul 07:54
f5346b9
Compare
Choose a tag to compare

The tool could previously fail during the verification step if there were screenshots from multiple different device sizes in the same folder. This release fixes that by only verifying the screenshots which are actually used in the config file

Updated dependencies and fixed broken argument parsing

02 Jul 07:40
910d24a
Compare
Choose a tag to compare
2.1.1

Updated ArgumentParser and fixed failing command parsing (#12)

New year, new SwiftFrame

18 Jun 08:40
0f837a0
Compare
Choose a tag to compare

It's not exactly a new year anymore, but version 2.0 of SwiftFrame is finally here!

Introduction

Version 2.0 introduces a new approach to how you place screenshots. Instead of just screenshots and a background color, you now have to supply a template file which acts as a canvas. This allows you to include 3D device mockups to take your App Store screenshots to new heights. To achieve this, the places in the template file where the screenshots should go later on should be transparent (see Example folder). The render order is Screenshots -> Template Image -> Text to make sure devices with rounded corners will work with SwiftFrame as well

New Features

SwiftFrame was almost completely rewritten and there's tons of new features. Here are the most important ones:

Screenshots

  • You can (and have to) place your screenshots with almost no limitations on that canvas. That means screenshots can be rotated in 2D as well as 3D space.
  • Screenshots can now span multiple screenshot widths (see sample project)

Text

  • Going hand in hand with the less restricted screenshot placement, text placement is now also way more flexible. You can place your text anywhere on the canvas by supplying a bounding box (rotation is not currently supported)
  • Speaking of text rendering, you can now markup your strings with HTML tags such as <b>, <i> or <u> and SwiftFrame will take care of the rest. To use this, please make sure the font file you pass in has all the versions you need.
  • As before, text will be rendered at the maximum font size that fits the string into the given bounding box, unless there's a text group specified. If there are other titles using the same text group identifier, a common maximum will be calculated and used for all titles. This is useful when you want all your strings to have the same size but still be as large as possible
  • SwiftFrame now expects .strings files for strings which are basically keyed dictionaries. Since there can now be more than one title per screen, they have to have some identifier.

Text Groups

  • As mentioned above, text groups are completely new in v2.0. They can be used to force multiple strings to use the same font size

Output

  • The output images produced by SwiftFrame are now placed into sub-folders and indexed, similar to what frameit does. This makes integration with Fastlane a breeze

Gap support is here

01 Apr 08:08
425ce95
Compare
Choose a tag to compare

Gap Support

You can now specify a gap width (in pixels) that should be skipped over during cropping of the output screenshots. That way you can account for spacing between displayed screenshots on the iOS App Store for example. SwiftFrame also verifies that your template file is a multiple of screenshot size plus a multiple of gap width if the specified gap width is larger than 0

Improved error messages

Where supported, SwiftFrame will now inform about expected values and the actual values if it encounters a validation error