Posted on Leave a comment

Meet the developer: Andre Haddad

Once a refugee, Haddad now runs the high-end car-rental app Turo.

Thirty years ago, Turo CEO Andre Haddad was in a parking garage beneath his family’s apartment building in Beirut, listening for the bombs.

It was 1989, the last of the 15-year Lebanese civil war, and the two dozen families living in Haddad’s eight-story building often spent their nights huddled in the relative safety of the underground garage. Although just big enough for six cars at most, it had become a shelter, strewn with mattresses and lamps and personal items brought down from the apartments above.

“You build up kind of a war wisdom over time: You don’t want to be on the top floors of your building,” Haddad says. “And a lot of the shooting would happen at night, so you’d try to sleep in the garage, hearing the shelling and building shaking.”

His family lived like this for more than a year, until the night the shells found their apartment.

Haddad is recounting his story in downtown San Francisco at the offices of his car-sharing app Turo, which that lets people rent out their (often very fancy) cars by the day. Want to drive a Lamborghini? Or take a BMW convertible from Vegas to the Bay Area? All doable. Today, Turo has more than 14 million members and 450,000 registered vehicles. Haddad’s road to get here crossed many borders, but it started that night in the garage.

*Turo* makes it possible to rent the kind of cars that you’d normally associate with spy movies.

After the bomb hit, things moved fast. Haddad’s family decided to to leave Lebanon and stay with relatives in Cyprus, but Haddad took a different path. Prior to the blast he’d been chatting with a cousin in Paris, one who’d asked him a question he’d never considered. “He said, ‘It’s your senior year of high school, what are your plans? What do you want to do?’” Haddad said. “I thought, wow, nobody’s asked me those questions. When you’re in those conditions, there’s not much of a vision for the future. It’s a mechanism of self-defense.”

The day after the shell landed on his balcony, Haddad called that cousin, and before long he had a ticket to Paris and a plan to get into business school. Seventeen years old and on his own, Haddad also found his way into the French music scene and became a DJ — he claims to have seen Daft Punk before the helmets — but there was a problem: His music had all been obliterated in the blast.

Haddad, a former DJ in Paris, keeps a well-stocked music collection.

“I was looking for ways to rebuild my collection,” he says, “and I discovered eBay.”

The selection was incredible, but the more he bought, the more he wanted to sell — and the shipping charges were piling up fast. To address both problems —and using his speedily developing business instincts — he founded iBazar, which launched as a way to swap music and became one of Europe’s largest online marketplaces. iBazar grew large enough that it was eventually purchased by eBay for more than $100 million. Just like that, everything had changed.

Haddad spent the next decade in tech jobs, occupying positions with eBay and serving as CEO of Shopping.com. In 2011, ground down by the workload, he was planning on taking a sabbatical when a friend approached him about a car-sharing idea called Turo. “I got to really appreciate the creativity, the scrappiness, the hunger,” he says. Plus, he was well familiar with the notion of using the internet to connect real people. “Turo was built on trust, which made me feel very comfortable with it,” he says.

It’s an incredible highlight to see the power of humanity.

Andre Haddad

Today, Turo has more than 14 million members. “There are users who are barely 18, and some in their 80s,” he says. The app offers everything from standard sedans to exotic high-end imports, often for less than the price of a traditional rental.

In addition, after some initial hesitation, Haddad has become more vocal about immigration issues. “At first, I didn’t want any public involvement with this kind of noble cause to be misinterpreted as personal publicity — or even worse, corporate publicity,” he says. Plus, he adds, it hadn’t been easy to turn the page.

Today, he’s becoming more and more outspoken, both out loud and in writing. He’s spent years on the board of Immigration Equality, an organization designed to bring equality to LGBTQ+ immigrants. And he’s signed amicus briefs and open letters aimed at protecting immigrants. “It’s the right thing to do,” he says. “It helps the economic development of the United States. But the fact is, people are here because they chose to come here. It’s a very, very hard thing to do. If you’re willing to do that, it means there’s some exceptional traits of character.”

Originally published on the App Store.

Posted on Leave a comment

Meet the creative: Chelsa Lauderdale

When writer Chelsa Lauderdale was creating characters for “The Elementalists,” an interactive story in the game Choices, she wanted one in particular to have it all: great looks, enviable talent, a heart of gold.

In other words, everything you’d want in a potential love interest who also happens to be a wizard.

Lauderdale imbued him with real depth. As a student at a university for the magically gifted, Griffin Langley may be able to cast spells, but as a black man he struggles with expectations of his race and gender.

The more time you spend with Griffin, the more he opens up to you.

This is all part of her writing process with Choices. “One of the first things we asked ourselves was: What communities are we underserving?” Lauderdale says. “What can we do to make sure people see themselves in this?“

When she started the job, she was unsure how far to push the stories, which present players with different narrative options and let them choose how everything unfolds.

She had recently decided to cut her hair short and grow out what she calls her “baby Afro” after a conflicted relationship with straighteners and dyes. “I remember asking if it was OK to include a story line about how a character learned to love her natural hair,” she says.

There used to be this idea that black men shouldn’t show weakness. That can be a tremendous weight.

The team embraced the idea. “Since then I’ve tried to insert little pieces of my experience,” she says.

To Chelsa, Griffin brings many people’s real-world experiences to virtual life—and offers an alternative to how black men are usually portrayed in games. 

“There used to be this idea that black men should be hard, they shouldn’t show weakness. That can be a tremendous weight on people’s mental health and on their relationships.”

Lauderdale started her career early. “I got a writing assignment in the fourth grade and haven’t really stopped since then,” she says.

Griffin is the first character to greet you when you arrive at the magical university, and he warmly takes you under his wing. Over the course of your courtship, he gradually reveals his struggles, and together you tackle identity issues head-on.

“He’s torn between his tough appearance and sweet personality, his parents’ wants and his own,” she says. “I think this is a common feeling within the black community.”

Stories can perpetuate stereotypes or they can change narratives.

Chelsa is writing more Choices stories about identity — as well as young-adult fiction that explores female friendship and community.

“Stories can perpetuate stereotypes or they can change narratives,” she says. “That’s really up to the people who write them.”


Originally published on the App Store.

Posted on Leave a comment

Meet the developer: Kaya Thomas

Kaya Thomas’ We Read Too spotlights writers and characters of color.

Kaya Thomas has always been a voracious reader, yet growing up she rarely came across protagonists who looked like her. “High school was when I started to realize that none of the characters were ever black girls,” Thomas says.

This inspired her to code We Read Too, an app that helps you find children’s books by writers of color, featuring characters of color.

We Read Too has become one of the most comprehensive catalogs of children’s books by writers of color, featuring characters of color.

Thomas, a Dartmouth graduate, now lives in Oakland and works as an iOS engineer at Calm. She still remembers creating a new document on her computer and writing the list that would eventually become We Read Too. 

“The app looks much different today than it did in 2014,” she laughs. In its current version, you can browse by category (picture, chapter, middle grades, young adult) and search by title or author. There are currently over 900 books cataloged in the app.

High school was when I started to realize that none of the characters were ever black girls.

As it stands, We Read Too is a labor of love. Anyone can download it for free, and Thomas is dedicated to keeping it that way. “I wanted We Read Too to be accessible to everyone, regardless of whether they could afford to buy a $1 app,” she says. “I have no intention of ever charging anyone for access to the information.”

Although Thomas hasn’t earned any money from the app, it has paid off in other ways.

“We Read Too helped me build my network and connections, and gain the courage to move out to California and get into the tech industry.”

Kaya Thomas is an iOS engineer at Calm.

When asked how she’d like to see We Read Too expand, Thomas says it’s all about community: “First and foremost, I want to make sure that there are as many titles in the app as possible.” And she hopes to partner with libraries to integrate with their cataloging systems, since this is where many kids and teens get their books. 

Thomas also has a few words of advice for coders of all backgrounds. 

“Don’t let anyone discourage you. You have to realize that you are 100 percent capable of learning the skills,” she says. “There’s no one person who is supposed to be a coder. You are completely capable, and don’t let anyone say you’re not because of who you are.”

Posted on Leave a comment

Meet the Developer: David Niemeijer

In 1995, Giesbert Nijhuis was touring through Europe with his ska-reggae band when his van tumbled off the road. The accident left Nijhuis paralyzed from the neck down. He was 26 years old.

“I couldn’t move anything except for my head, and only had an eighth of my normal breathing capacity. There was almost no hope of healing or repairing the spinal cord,” says Nijhuis, a professional graphic designer and photographer. “At first I was questioning if I wanted to continue life like this.”

David Niemeijer, a friend of Nijhuis’ since childhood, remembers that dark time well. “His new physical challenges drained the life right out of him.”

Giesbert Nijhuis (top) inspired his friend David Niemeijer to create AssistiveWare.

The accident affected every part of Nijhuis’ life, including his very livelihood. To edit images on his Mac, he needed to be able to enter key combinations, but the assistive onscreen keyboards available then didn’t allow for that. In his new situation—or his “second life,” as he likes to call it—he was facing serious accessibility issues.

So Niemeijer, who has a degree in agricultural and environmental sciences and was working at a university at the time, created his own assistive keyboard—what would become the Mac app Keystrokes. He soon scaled back his work at the university to focus on founding a software company, AssistiveWare, which released a number of pioneering accessibility tools for the desktop.

And then came the launch of iOS, which changed everything for Niemeijer by untethering assistive software from the computer. In 2009, just a year after the iOS Software Development Kit launched, AssistiveWare released its breakthrough product: Proloquo2Go.

*Proloquo2Go* is a symbol-based keyboard to aid people with difficulties in speaking.

Proloquo2Go gives a voice to those who have difficulty speaking (proloquo is Latin for “to speak out loud”). Paired with an iPhone or iPad, it also made this assistive technology more widely available. “It enables people to start learning to use it much earlier. It used to be that you’d get an expensive machine when you were 7 or 8 years old,” says Niemeijer.

“With an iPad or iPod touch, you can start around 2 or 3 years old, which makes a huge difference, because some kids then can go to regular schools and are not reliant on special education.”

Proloquo2Go presents a variety of simple drawings; tap them to create sentences that the app will read aloud. Instead of providing only a limited number of predetermined sentences and phrases, Proloquo2Go lets you combine words in infinite ways.

“It offers users total communication,” says Niemeijer. “It allows people to not just use utilitarian language, such as asking or answering questions, but also to share stories or emotional anecdotes. It allows them to tell a joke.”

AssistiveWare currently has a half dozen apps available across iPhone, iPad, and Apple Watch. Pictello lets users create storybooks using text-to-speech and the photos on their iOS device. Keeble is a highly customizable keyboard app that supports users with motor challenges, low vision, and dyslexia. And News-2-You publishes a weekly newspaper, written with both text and symbols, for beginning readers.

Nijhuis is proud of what Niemeijer has managed to build. “I love having seen David’s works grow from the software he made just for me to the company it is today, serving so many people all over the world.”

The designer continues to influence AssistiveWare’s evolution: He created the company logo and the app icon for Proloquo2Go.


Originally published on the App Store.

Posted on Leave a comment

How to design an accessible Apple Watch app

Apple Watch is built with accessibility in mind, empowering everyone to use their device in the way that suits them best — and your Apple Watch app can take advantage of all these features to create a seamless and inclusive experience.

When you’re designing your Apple Watch app, here are a few considerations to take into account to make it accessible to everyone.

Responsive, responsible reviews

One of the best ways to get a picture of the work you need to do is to explore Apple Watch’s accessibility and display options: These allow people to adjust or augment their interface and interactions with Apple Watch.

You can access accessibility and text settings on Apple Watch or through the Watch app on iPhone.

When designing your app, Dynamic Type and VoiceOver are two core settings worth exploring: Dynamic Type allows people to change the size of their text on Apple Watch, while VoiceOver helps people navigate without having to view the screen. You can enable or adjust either in the Settings app or on your iPhone’s Watch app at any time. 
We recommend testing your Watch app with these options enabled to make sure your app is fully accessible. You may also want to consider testing your interface with Bold Text, Reduce Transparency, and Reduce Motion.

For each test you run, ask yourself a few questions: How does your interface change? Are there aspects of your design that are no longer being well-represented? Take detailed notes and screenshots — these can help you go back and address potential issues in both your designs and your app’s Xcode project.

Scale up, scale down

Compared with other Apple products, the small size of an Apple Watch display means far less space for presenting text. As such, it can be tempting to consider specifying fixed smaller font sizes so that more text can be shown on screen at once.

Despite this, it’s important to use legible font sizes and support Dynamic Type. Displaying more text on screen, while helpful in principle, won’t help anyone if it’s too small to read. Instead, let text scale naturally, and use Apple Watch’s swipe gestures or rotate the Digital Crown to read longer text.

In watchOS 5, four large type sizes were added to the built-in styles on Apple Watch. Each column in this table is manifested as a type size option, which people can set on Apple Watch in **Settings > Display & Brightness > Text Size**.

The quickest way to support Dynamic Type and text scaling is to use built-in text styles, which set type using Apple Watch’s system font: SF Compact. This font is specifically designed for optimal legibility at small sizes, offering nine built-in styles in a range of sizes and weights to help make text in your app as readable as possible.

As a general rule, all text in your app should scale appropriately when people adjust their text size. Fixed text sizes should be used only for information that is clearly legible at its default setting. For example, the Podcasts app uses built-in text styles to display the podcast title at a consistently large size, and enables its smaller text elements to scale.

When text is set to the smallest size, the Podcasts app displays two full episode rows on a 44mm Apple Watch. At the largest size, there are fewer rows displayed but the episode title, date and duration are much larger.

If you plan to use a custom font within your app, you’ll need to take a few additional steps to ensure that it works with Dynamic Type, including adding the font to your project and configuring text styles.

Learn more about adding custom fonts >

Learn more about scaling fonts using Dynamic Type >

Support VoiceOver with accessibility labels

VoiceOver is a gesture-based screen reader that tells you exactly what’s happening on your Apple Watch, and helps you navigate it without the need to see the screen. You can add support for VoiceOver in your app with accessibility labels, which help people using the feature understand how your interface is constructed.


Fun fact: If you want to quickly test VoiceOver in your app, you can use Siri. Just enable Siri and ask it to “Turn on VoiceOver.”


When someone looks at your interface on Apple Watch, your app can rely on common visual paradigms like button shapes and lists to communicate information and actions. For VoiceOver, think about how you might translate that experience to someone hearing the interface of your app: Start by designating a clear reading order of your interface elements, and make sure that you label your interface elements with brief and clear descriptions.

There’s one more step to consider when implementing VoiceOver: Your audience may want to hear your interface in another language. VoiceOver supports more than 35 languages, and you can make sure your app is ready for use in all of them by localizing your text strings so that all accessibility labels and hints are read in the appropriate language.

Learn more about crafting a great VoiceOver experience in your app >

Learn more about adding accessibility labels to your app >

Learn more about localizing your text strings >

Watch and learn

Apple Watch is our most personal device, and it’s important to provide flexibility for people to experience their apps in the way that best suits them. For everything you create, it’s worth taking the time to test your app and make any adjustments. Whether you’re adding scalable text or incorporating a better VoiceOver experience, these changes have a big impact on people who need or want accessibility features on Apple Watch, and they’ll likely also help you craft better overall designs for everyone who enjoys your app.

Resources

Learn more about designing with accessibility in mind >

Watch “How to write great accessibility labels” >

Learn more about designing type for your apps >

Download SF Compact >

Download design templates for Apple Watch >

Learn more about supporting VoiceOver in your app >

How to use VoiceOver on Apple Watch >

Posted on Leave a comment

Enhance the VoiceOver experience in your app

VoiceOver is a core part of helping people navigate without needing to view their screen. Take this article, for instance: You may be reading this text visually; however, if you’re a developer who uses VoiceOver, you’ll hear this paragraph (and the rest of the article) spoken to you along with verbal descriptions of any important elements you might need to know about. And if you’ve opened this article in the Developer app, you’ll also hear about navigational elements in the app.

Whether you personally use VoiceOver or not, here’s how you can put yourself in the mindset of those who do to help design a standout experience.

Master accessibility elements in your app

When someone enables VoiceOver on iOS, iPadOS, watchOS, or tvOS, it begins describing all of the labeled elements on screen. To decide what to read, VoiceOver looks for accessibility elements — individual or grouped visual elements within a view — as well as whether someone can interact with these elements. As it describes an element, VoiceOver also highlights it on screen by displaying a black rectangle around the content.


Tip: Explore VoiceOver on your own device

While Xcode provides you with several tools to test your app’s accessibility, you can learn a lot about VoiceOver and how various apps have implemented it by taking a test drive on your own iPhone, iPad, Mac, Apple Watch, or Apple TV. You can enable VoiceOver in the Settings app or System Preferences on your Mac, and if you want to have easy access to the feature, you can even enable a hardware-based Accessibility Shortcut.


VoiceOver also adds a few specific multitouch gestures and taps to help people navigate their device. Swiping to the right anywhere on the screen will navigate to the next element in the view, while swiping to the left will navigate to the previous one. Each time VoiceOver lands on a new element, it speaks details like its accessibility label and value aloud, along with hints or traits if the element has any.

Alternatively, people may tap directly on a visual element to navigate to it. If it’s within the bounds of an accessibility element, VoiceOver will focus on it. Otherwise, VoiceOver will emit a “boink” sound.

By default, all standard UIKit controls are accessibility elements. To flag a custom control or view as an accessibility element, you can use isAccessibilityElement:

var isAccessibilityElement: Bool { get set }

Learn more about accessibility elements >

Group and declutter accessibility elements

When navigating by swiping, VoiceOver visits each element in order of its appearance on the screen. That said, this isn’t always the most efficient way for someone to absorb information: If your app has too many accessibility elements, it may take someone a very long time to understand it. Instead, look for opportunities to group your accessibility elements together and create a simplified hierarchy.

When you group your accessibility elements, VoiceOver will describe them together, which can speed up navigation through your app. For example, you might group a view that contains a title, text, and a time stamp label, as with Health’s Heart Rate title, heartbeat reading, and time of latest reading.

The Health app uses grouped elements in the Summary view to provide a streamlined experience for people using VoiceOver.

This also helps provide context for someone using VoiceOver that would otherwise be present in a visual interface: By grouping them and having them read together, this lets people know that the time and text are associated with the title, rather than three unrelated items.

Add custom actions

You can assign any accessibility element custom actions, which provides extra functionality. For example, if you use Mail without VoiceOver enabled, you can tap on a message inside the inbox to view it, but you can also swipe left or right on an individual message to access other features like deleting, flagging, or moving a message. Custom actions let people who use VoiceOver have access to those same features in a different manner: When VoiceOver focuses on the message element, it speaks the hint “Actions Available: Swipe up or down to select a custom action.” Once you arrive at the action you want, you can double-tap to perform it.


Fun fact: When you implement leading or trailing table view swipe gestures in your app, you automatically get VoiceOver actions for these buttons in your project.


Custom actions are very powerful when combined with grouped elements and can help simplify your navigable hierarchy. If you have a view as an accessibility element that has multiple buttons as subviews, for example, you aren’t always able to navigate to those buttons with VoiceOver. While it might be tempting to break up this up into smaller elements and allow buttons to become individually focusable, this may add clutter.

We strongly recommend using Custom Actions to expose these button actions, letting you keep the element’s organization while still providing full controls to someone using VoiceOver. When you carefully group your elements and add custom actions, it creates a better overall navigation experience and will make your app far more enjoyable for people who rely on VoiceOver.

To set a UIAccessibilityCustomAction on your accessibility elements, you can use accessibilityCustomActions:

var accessibilityCustomActions: [UIAccessibilityCustomAction]? { get set }

Learn more about custom actions >

Flag layout changes

Your app may change its layout visually to indicate the result of an action or event. In the Shortcuts app, for example, tapping the + button brings up components that will help someone build a shortcut. For people who use VoiceOver, you can use the “screen changed” or “layout changed” notifications to guide their focus to the new elements.

The Shortcuts app plays a “screen changed” notification after someone selects the + button.

It’s best to use “layout changed” only when there’s a major change to your interface, as pulling focus too often can make people confused and lose context inside your app.

To post an accessibility notification, you can use post(notification:argument:) on UIAccessibility:

static func post(notification: UIAccessibility.Notification, argument: Any?)

Learn more about accessibility notifications >

Next steps

When you make these improvements to your app, you’re not only unlocking better VoiceOver support, you’re also laying the groundwork for our other assistive technologies like Switch Control and Full Keyboard Access. So go, explore, and make your app’s accessibility experience a great one — because technology is most powerful when it empowers everyone.

Resources

Learn more about VoiceOver gestures >

Watch “Writing Great Accessibility Labels” >

Watch “Making Apps More Accessible With Custom Actions” >

Posted on Leave a comment

Meet the developer: Craig Hockenberry

Get to know the influential creator of Twitterrific.

It took a while for Craig Hockenberry, principal at The Iconfactory, to realize his true calling. Although he began coding when he was 16, in 1976 (the same year the Apple I was released) his career took a detour into corporate management.

“We originally made Twitterrific because all the folks at the Iconfactory wanted an easier way to follow what our friends and colleagues were doing,” said Hockenberry. “xScope is another product in the same vein—we built it because we needed it. We’re our own best customers.”

*Twitterrific*’s multipane view color-codes tweets by category.

To say Hockenberry has been ahead of the curve over the course of his storied career is an understatement. Twitterrific, released over a decade ago, was the very first Twitter client for Mac. Hockenberry even helped coin the term “tweet.”

And you know the signature blue bird everyone associates with the social network? Hockenberry created the first one: an icon he named Ollie. (Twitter later followed suit with its own variation.)

While the apps Hockenberry has worked on are designed for a diverse range of customers, the philosophy behind them has remained the same.

“When we create a new app, we’re always thinking, ‘What problem does this solve for the customer?’” he says. For Hockenberry, functionality and design are equally important. “Functionality overcomes the problem, and design makes it approachable.”

*xScope*’s overlay tools give you a sense of how graphics will appear to those with red-green color blindness and other visual impairments.

Ask anyone in the community for a shortlist of the best developers and Hockenberry’s name inevitably comes up — no doubt because he’s been such an active and generous member. Iconfactory.com gives away about 2 terabytes of icons and wallpapers each month. Hockenberry also blogs about development at furbo.org, where he’s always willing to share his know-how.

“It’s something I learned from my dad — you need to help others in your community,” he says. “When I find something cool or have a unique insight, I love to share it with other developers.”

Thankfully, he has no intention of slowing down.

“My grandfather always said, ‘You’re only as old as you act.’ If that’s the case, I’m still my younger self!”


Originally published on the Mac App Store.

Posted on Leave a comment

How to master multitasking and multiple windows for your iPad app

Multitasking is one of the many great features of iPadOS and gives people options and flexibility in how they want to interact with your app and others on iPad. They can browse your app in full screen, put it next to another app in Split View, pull it up in Slide Over, or even view multiple instances of your app side by side. Here are a few ways you can improve the look and feel of your iPad app for multitasking and multiple windows.

Make your app a multitasking master

Whether your app is running by itself, in a Slide Over pane, or side by side in Split View, it should always support a great multitasking experience. People expect apps on iPad to seamlessly adjust between size classes as they add or remove apps on their screen. When you design an adaptive UI, you can ensure that your controls and views remain visible and useable, whether your app is full screen or displaying in a compact view.

To make your view controllers and views responsive to changes in the iOS interface environment, override the traitCollectionDidChange(_:) method from the trait environment protocol. To customize view controller animations in response to interface environment changes, override the willTransition(to:with:) method of the UIContentContainer protocol.

Learn more about UI trait collections >

You can further guarantee people a flexible, adaptive experience by using tools like Auto Layout and safe area insets to ensure your app looks great no matter how it’s being used.

Read more about how you can make your app look great on every screen >

Multiply your windows

Starting with iPadOS 13, you can add support for creating multiple instances of your app. When you support multiple windows, your app gains additional versatility, allowing people to use it alongside itself or multiple other applications. For example, someone using a to-do app could view two lists from that app side by side in Split View; they could also create multiple Split View instances that pair one of their to-do lists alongside a Safari window, while another to-do list sits next to Mail.

To add multiple windows to your app, you create scenes for each instance of your user interface using UIScene. When you add support for UIScene, consider also implementing modern state restoration, which lets people come right back to what they were working on in your app rather than resetting to the main screen.

Learn more about modern state restoration >

Additionally, if you add multiple windows to iPad, that paves the way for multiple window support on Mac Catalyst if you’re also building a Mac app.

Learn more about designing for multiple windows >

Learn more about implementing multiple windows in your app >


Resources

Get started with multitasking >

Learn more about scenes >

Explore a sample project for supporting multiple windows on iPad >

Watch “Window Management in Your Multitasking App” >

Watch “Introducing Multiple Windows on iPad” >

Watch “Architecting Your App for Multiple Windows” >

Posted on Leave a comment

How to make your app look great on every screen

Imagine, for a moment: You’ve just spotted the perfect pair of shoes online. They’re the right color, they’re designed impeccably, and you can’t wait to get them delivered and on your feet. Except, wait — they’re only made in size 7. And sadly, while you might be able to cram your feet in and wear them on occasion, they won’t be comfortable enough for daily use.

Now, most shoe manufacturers don’t offer their shoes in just one size. Instead, when they create a new shoe model, they offer a range of sizes with the same design and functionality so that the customer can enjoy the one that fits best.

It’s the same for really great apps: When developing, you want to create an interface that adapts to a range of screen sizes with the same design and functionality for all. That way, whether someone uses iPhone SE or iPad Pro to view your app, they still get to have an enjoyable and comfortable experience.

Below, we’ve collected some of the best ways you can adapt your app’s interface so that it looks great, regardless of device.

Universal design

While you can design solely for specific platforms like iPhone, iPad, or Mac, consider creating a universal version of your app that supports multiple devices. This lets your customer choose how your app fits into their life, and it’s the most adaptive experience you can provide. Whether you’re creating apps designed for a single platform or multiple devices, however, they should support all available screen sizes and size classes for those devices.

Ready to launch

A great app experience starts with a universal launch screen: Designing the right one can make a world of difference in how quickly you can immerse people into your user interface. Use Xcode to create a launch screen storyboard — they’re flexible and support all device screen sizes, allowing you to use a single storyboard to manage your launch screens on every platform you support.

Learn more about designing launch screens for seamless starts >

Get into Auto Layout

When crafting your interface, Auto Layout can help you adapt to any screen size. It provides guidelines for your app that relate the positioning of one piece of content to any other content or views. This lets your content scale and reflow in the manner you intend it. Avoid using absolute screen coordinates, as those may result in off-center buttons or awkward content flow on different screen sizes.

Learn more about Auto Layout in the Developer Library >

Explore SwiftUI

If your app is built for iOS 13, iPadOS 13, watchOS 6, tvOS 13, or macOS Catalina, you may want to also consider implementing SwiftUI. The declarative nature of SwiftUI ensures that your content is adaptable out of the box, and that code is also often reusable when building apps for other Apple platforms.

Master multitasking

If you’re developing an app that supports iPad, remember that people can use it in a variety of ways: They can browse the app in full screen, put it next to another app in Split View, pull it up in Slide Over, or (if your app supports it) even view multiple windows side by side. Consider each of these size classes and how your interface can successfully adapt to provide the best experience.

Get started with multitasking >

Keep your content readable

It can be challenging to design for a great reading experience on all devices if you have text- or image-heavy content in your app. Let the Readable Content Guide do the heavy lifting for you: The layout guide defines an area that can easily be read without extra effort.

Learn more about the Readable Content Guide >

Additionally, make sure your reading experience is accessible. Many people prefer to change their text size to something other than the default. Supporting Dynamic Type ensures your text scales to what your customer has indicated they want. It also ensures that as the text gets larger or smaller, other on-screen elements dynamically move to accommodate these changes.

Learn more about designing with text weight and size in mind >

Learn more about scaling text set in a custom font >

Use safe areas when designing your interface to ensure your views will never over or underlap other content or hardware elements, regardless of device.

Learn more about safe areas and safeAreaLayoutGuide >

Craft your queries effectively

While it’s helpful — and often critical — to know the device capabilities on which your app is currently running, be mindful to avoid checking for a known set of devices and collating behaviors based on those results. Instead, query for feature availability and provide conditional paths based on the results of that check.

For example, when building an AR app, you can use the isSupported property of the appropriate ARConfiguration subclass to see whether a device supports a given configuration.

class var isSupported: Bool { get }

Preview your work

In Xcode 11, you can do a lot of your basic interface testing directly in Previews. This allows you to see how your interface handles different conditions, devices, and use cases. You can automatically see how Dynamic Type might render if your app is running on iPhone SE, for example, or view different localization options.

While Previews are designed to work with SwiftUI, you can also use them with your existing Swift or Obj-C views to make sure your UI remains adaptable as you change your code.


Resources

Watch “Mastering Xcode Previews” >

Learn more about SwiftUI >

Learn more about designing for adaptive interfaces >

Learn more about using typography on all screen sizes >

Posted on Leave a comment

Meet the developer: Panic

How Panic manages to find beauty in FTP and SSH.

It may be cool to be a developer these days, but that wasn’t always the case—especially not in 1998, when Cabel Sasser and Steven Frank started Panic. Running a fledgling software company was daunting and exhausting, but the duo was having so much fun they didn’t care.

“Steven once compared our relationship to that of R2-D2 and C-3PO,” Sasser says. “I roll around making strange noises and interfacing with things, while he stays the course, flapping his arms and fretting about protocol. But they need each other to succeed, right?”

Yes, even an FTP client can look great and be easy to use.

When Panic started, developers had to worry about more than coding a great app; they also had to figure out how and where they were going to sell it. The internet wasn’t the e-commerce juggernaut it is now. Developers needed to hit the streets.

“It’s almost impossible to comprehend now, but back in the day, if you wanted to sell an app, you had to manufacture boxes, sign up with an expensive distributor, try to get your boxed app onto the shelves at the computer store, and pay extra for placement on the endcap,” Sasser says.

With Transmit, the elegant FTP app Panic debuted in 1998, the company established what’s become a core principle: “Take a complicated thing and make it easy, beautiful, and powerful,” Sasser says.

Acknowledging that file-transfer apps aren’t exactly the most exciting, Sasser says he’s well aware that a lot of customers would be satisfied if Transmit simply did the bare minimum. An FTP app doesn’t have to wow you. Nor do Panic’s other apps, like Prompt, an SSH client, or Coda, a file manager and text editor.

But Sasser expects more. He wants Panic’s apps to appeal to your design sensibility as well.

Take a complicated thing and make it easy, beautiful, and powerful.

Panic cofounder Cabel Sasser

“The matrix is really simple: Too much design and you can alienate power users. Not enough and you’ll intimidate new users,” Sasser says. Striking the right balance applies to functionality as well. “Balancing design and functionality is one of the most difficult parts of our job.”

After decades spent developing software for the Mac, Sasser and Frank have earned the respect of customers and other developers alike. Sasser chalks this up to Panic’s core tenets: honesty, personality, and responsibility.

“As humans, we always know when a company is selling us some PR flimflam. It never works,” he says. “So we are always absolutely honest and up-front.”


Originally published on the App Store and Mac App Store.