https://abs.twimg.com/emoji/v2/... draggable="false" alt="🎨" title="Farbpalette" aria-label="Emoji: Farbpalette"> iOS Design and UX Tips https://abs.twimg.com/emoji/v2/... draggable="false" alt="🎨" title="Farbpalette" aria-label="Emoji: Farbpalette">

I’ll be extrapolating out things I’ve learned, read from the HIG and have seen that make an iOS app look and feel good.

Tip 1) Make a table view row animate its selection state as it’s popping and pushing on the nav Stack.
Tip 1 Continued:

UITableViewControllers get this behavior for free. If you roll your own table view you’ll need to do it yourself. You can do so by grabbing the controller’s transition coordinator as seen in this (gasp!) Objective-C code here called in viewWillAppear https://abs.twimg.com/emoji/v2/... draggable="false" alt="💫" title="Symbol für Benommenheit" aria-label="Emoji: Symbol für Benommenheit">
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 3 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

Users expect Dynamic Type to be supported, and an app feels off if your text doesn& #39;t respond to their settings.

While table or collection views coalesce this behavior for you in most cases, other times you& #39;ll need to use the UIContentSizeCategoryAdjusting protocol.
https://abs.twimg.com/emoji/v2/... draggable=Tip 3 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Users expect Dynamic Type to be supported, and an app feels off if your text doesn& #39;t respond to their settings. While table or collection views coalesce this behavior for you in most cases, other times you& #39;ll need to use the UIContentSizeCategoryAdjusting protocol." title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 3 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Users expect Dynamic Type to be supported, and an app feels off if your text doesn& #39;t respond to their settings. While table or collection views coalesce this behavior for you in most cases, other times you& #39;ll need to use the UIContentSizeCategoryAdjusting protocol." class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 3 Continuedhttps://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

Luckily, most UIKit text controls adopt that protocol, so it& #39;s typically just a case of setting the protocol& #39;s only required boolean value to true.

Plus, pairing these with stack views makes adapting to any text need a bit easier.
https://abs.twimg.com/emoji/v2/... draggable=Tip 3 Continuedhttps://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Luckily, most UIKit text controls adopt that protocol, so it& #39;s typically just a case of setting the protocol& #39;s only required boolean value to true.Plus, pairing these with stack views makes adapting to any text need a bit easier." title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 3 Continuedhttps://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Luckily, most UIKit text controls adopt that protocol, so it& #39;s typically just a case of setting the protocol& #39;s only required boolean value to true.Plus, pairing these with stack views makes adapting to any text need a bit easier." class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne"> Tip 5 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

You want to utilize the margins guide of your superview with exceptions. Some developers are unaware of them, and fall into using magic numbers for padding.

That should be the exception rather than the rule. Notice how the first label has no leading padding.
https://abs.twimg.com/emoji/v2/... draggable= Tip 5 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">You want to utilize the margins guide of your superview with exceptions. Some developers are unaware of them, and fall into using magic numbers for padding. That should be the exception rather than the rule. Notice how the first label has no leading padding." title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne"> Tip 5 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">You want to utilize the margins guide of your superview with exceptions. Some developers are unaware of them, and fall into using magic numbers for padding. That should be the exception rather than the rule. Notice how the first label has no leading padding." class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 7 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

With many iOS devices using the home indicator these days, there are times when you want a rounded view to hug the edges near the top or bottom.

For this, use the right rounded corner style. In this case, you want a continuous corner curve, *not* a circular one.
https://abs.twimg.com/emoji/v2/... draggable=Tip 7 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">With many iOS devices using the home indicator these days, there are times when you want a rounded view to hug the edges near the top or bottom.For this, use the right rounded corner style. In this case, you want a continuous corner curve, *not* a circular one." title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 7 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">With many iOS devices using the home indicator these days, there are times when you want a rounded view to hug the edges near the top or bottom.For this, use the right rounded corner style. In this case, you want a continuous corner curve, *not* a circular one." class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 7 Continued https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

This is hard to see in the image, but there are two views overlaid here. The top black one has the correct corner curve, and the bottom red view has the wrong one.

You can see the outlines of the red view, they don& #39;t match the rounded corner of the device.
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 8 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

SF Symbols have a lot of utility, and one advantage is they are easily made "adaptive".

Continuing with accessibility sizes, you& #39;ll often want to make glyphs more prominent in these scenarios. Notice the right glyph is heavier matching the text, while the left isn& #39;t.
https://abs.twimg.com/emoji/v2/... draggable=Tip 8 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">SF Symbols have a lot of utility, and one advantage is they are easily made "adaptive".Continuing with accessibility sizes, you& #39;ll often want to make glyphs more prominent in these scenarios. Notice the right glyph is heavier matching the text, while the left isn& #39;t." title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 8 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">SF Symbols have a lot of utility, and one advantage is they are easily made "adaptive".Continuing with accessibility sizes, you& #39;ll often want to make glyphs more prominent in these scenarios. Notice the right glyph is heavier matching the text, while the left isn& #39;t." class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 9 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

Responding to accessibility & device needs on the fly not only promotes user empathy - it also produces a more polished experience. One example?

Using blur effects.

Users may not want these if they have reduced transparency on, or the device is in low power mode.
https://abs.twimg.com/emoji/v2/... draggable=Tip 9 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Responding to accessibility & device needs on the fly not only promotes user empathy - it also produces a more polished experience. One example?Using blur effects.Users may not want these if they have reduced transparency on, or the device is in low power mode." title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 9 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Responding to accessibility & device needs on the fly not only promotes user empathy - it also produces a more polished experience. One example?Using blur effects.Users may not want these if they have reduced transparency on, or the device is in low power mode." class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 9 Continued https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

In the image above, imagine the device is in low power mode or reduced transparency is on. We forgo the blurred background & custom transition animation. Instead, we use an opaque background and a standard transition.

Here& #39;s one way you can go about this:
https://abs.twimg.com/emoji/v2/... draggable=Tip 9 Continued https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">In the image above, imagine the device is in low power mode or reduced transparency is on. We forgo the blurred background & custom transition animation. Instead, we use an opaque background and a standard transition.Here& #39;s one way you can go about this:" title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 9 Continued https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">In the image above, imagine the device is in low power mode or reduced transparency is on. We forgo the blurred background & custom transition animation. Instead, we use an opaque background and a standard transition.Here& #39;s one way you can go about this:" class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne"> Tip 10 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

When using context menus (or pull-down menus for UIButton) it& #39;s easy to throw a bunch of actions in them without proper grouping.

Always logically group them by job (sharing, editing, etc.). Here, the menu on the left is harder to grasp than the one on the right.
https://abs.twimg.com/emoji/v2/... draggable= Tip 10 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">When using context menus (or pull-down menus for UIButton) it& #39;s easy to throw a bunch of actions in them without proper grouping.Always logically group them by job (sharing, editing, etc.). Here, the menu on the left is harder to grasp than the one on the right." title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne"> Tip 10 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">When using context menus (or pull-down menus for UIButton) it& #39;s easy to throw a bunch of actions in them without proper grouping.Always logically group them by job (sharing, editing, etc.). Here, the menu on the left is harder to grasp than the one on the right." class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 11 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

Many users invert iOS& #39; colors to help with light & color sensitivities. But, ensure you aren& #39;t degrading rich media in your app, which users likely expect to remain at their true fidelity.

For images & media, you& #39;ll likely want them to forgo this setting.
https://abs.twimg.com/emoji/v2/... draggable=Tip 11 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Many users invert iOS& #39; colors to help with light & color sensitivities. But, ensure you aren& #39;t degrading rich media in your app, which users likely expect to remain at their true fidelity. For images & media, you& #39;ll likely want them to forgo this setting." title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 11 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Many users invert iOS& #39; colors to help with light & color sensitivities. But, ensure you aren& #39;t degrading rich media in your app, which users likely expect to remain at their true fidelity. For images & media, you& #39;ll likely want them to forgo this setting." class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 12 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

Since iOS 13, users can enable Voice Control which allows one to navigate iOS by calling out prompts on screen.

By default, iOS vends your accessibilityLabel and in some cases, this might be too verbose. Instead, leverage the accessibilityUserInputLabel array.
https://abs.twimg.com/emoji/v2/... draggable=Tip 12 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Since iOS 13, users can enable Voice Control which allows one to navigate iOS by calling out prompts on screen. By default, iOS vends your accessibilityLabel and in some cases, this might be too verbose. Instead, leverage the accessibilityUserInputLabel array." title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 12 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Since iOS 13, users can enable Voice Control which allows one to navigate iOS by calling out prompts on screen. By default, iOS vends your accessibilityLabel and in some cases, this might be too verbose. Instead, leverage the accessibilityUserInputLabel array." class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 13 https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

Here& #39;s a remix of our very first tip, since with iOS 13 UICollectionView now supports a list style.

As with a table view, you& #39;ll want to animate a selection when popping and pushing on the navigation stack:
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 14 Continued https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

To fix this, utilize UIPreviewParameters& #39;s visiblePath property to customize the effect& #39;s look.

For the example above, I calculate the size of the actual text and apply some padding, and then center it within the control itself.
https://abs.twimg.com/emoji/v2/... draggable=Tip 14 Continued https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">To fix this, utilize UIPreviewParameters& #39;s visiblePath property to customize the effect& #39;s look. For the example above, I calculate the size of the actual text and apply some padding, and then center it within the control itself." title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 14 Continued https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">To fix this, utilize UIPreviewParameters& #39;s visiblePath property to customize the effect& #39;s look. For the example above, I calculate the size of the actual text and apply some padding, and then center it within the control itself." class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 15https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

Sometimes it& #39;s contextually relevant for Voice Over to read punctuation literally. For example, when viewing a code sample snippet. You can do this using an attributed string and the accessibilitySpeechPunctuation key.

Here is what happens with and without it:
https://abs.twimg.com/emoji/v2/... draggable=Tip 15https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Sometimes it& #39;s contextually relevant for Voice Over to read punctuation literally. For example, when viewing a code sample snippet. You can do this using an attributed string and the accessibilitySpeechPunctuation key.Here is what happens with and without it:" title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 15https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Sometimes it& #39;s contextually relevant for Voice Over to read punctuation literally. For example, when viewing a code sample snippet. You can do this using an attributed string and the accessibilitySpeechPunctuation key.Here is what happens with and without it:" class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 15 Continuedhttps://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

Instead of assigning to the label& #39;s text property directly, here we create an attributed string that contains the accessibilitySpeechPunctuation key with an NSNumber with a true boolean value (i.e. 1).

Then, we assign to the attributedText of the label.
https://abs.twimg.com/emoji/v2/... draggable=Tip 15 Continuedhttps://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Instead of assigning to the label& #39;s text property directly, here we create an attributed string that contains the accessibilitySpeechPunctuation key with an NSNumber with a true boolean value (i.e. 1).Then, we assign to the attributedText of the label." title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 15 Continuedhttps://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Instead of assigning to the label& #39;s text property directly, here we create an attributed string that contains the accessibilitySpeechPunctuation key with an NSNumber with a true boolean value (i.e. 1).Then, we assign to the attributedText of the label." class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 16https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

Take the time to evaluate which content pointer effect is appropriate for controls in your app.

These effects change the pointer& #39;s shape or augment the views it interacts with, so knowing which fit where makes your app feel at home.

Here& #39;s a general guide:
https://abs.twimg.com/emoji/v2/... draggable=Tip 16https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Take the time to evaluate which content pointer effect is appropriate for controls in your app. These effects change the pointer& #39;s shape or augment the views it interacts with, so knowing which fit where makes your app feel at home. Here& #39;s a general guide:" title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 16https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Take the time to evaluate which content pointer effect is appropriate for controls in your app. These effects change the pointer& #39;s shape or augment the views it interacts with, so knowing which fit where makes your app feel at home. Here& #39;s a general guide:" class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 17https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

In general, avoid truncation on interactive controls. If you can& #39;t expand views, consider variable width strings.

These use a .stringsdict lookup to vend a string based on width. Here, we use "Templates" instead of "Choose from Templates" when the width is tighter.
https://abs.twimg.com/emoji/v2/... draggable=Tip 17https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">In general, avoid truncation on interactive controls. If you can& #39;t expand views, consider variable width strings.These use a .stringsdict lookup to vend a string based on width. Here, we use "Templates" instead of "Choose from Templates" when the width is tighter." title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 17https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">In general, avoid truncation on interactive controls. If you can& #39;t expand views, consider variable width strings.These use a .stringsdict lookup to vend a string based on width. Here, we use "Templates" instead of "Choose from Templates" when the width is tighter." class="img-responsive" style="max-width:100%;"/>
https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 17 Continuedhttps://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">

If you use NSLocalizedString() along with UIKit controls, they& #39;ll choose the right one for you based on the presentation width measured in EMs.

If you want to vend one of these to some other component, varirantFittingPresentationWidth() is here.
https://abs.twimg.com/emoji/v2/... draggable=Tip 17 Continuedhttps://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">If you use NSLocalizedString() along with UIKit controls, they& #39;ll choose the right one for you based on the presentation width measured in EMs.If you want to vend one of these to some other component, varirantFittingPresentationWidth() is here." title="https://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">Tip 17 Continuedhttps://abs.twimg.com/emoji/v2/... draggable="false" alt="💡" title="Elektrische Glühbirne" aria-label="Emoji: Elektrische Glühbirne">If you use NSLocalizedString() along with UIKit controls, they& #39;ll choose the right one for you based on the presentation width measured in EMs.If you want to vend one of these to some other component, varirantFittingPresentationWidth() is here." class="img-responsive" style="max-width:100%;"/>
You can follow @JordanMorgan10.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: