I'm new to iOS development. I understand that Apple provides APIs to customize the navigation bar, but I'm using Xamarin to create a cross-platform app. On iOS and Android, the navigation and action bars do not look the same as both platforms have different UI conventions. However, I've been feeling increasingly tempted to create consistent UI as opposed to native experience. Google must have thought the same for their own apps and ported Material to iOS.

Having said that, it feels easier to just create a Grid or StakLayout and use it as the navigation bar for both apps. The question is, do developers already do this? Will Apple reject my app because I created a "fake" navigation bar so to speak instead of using what they already provide. The same question holds for Android as well.

P.S. Another reason I want to use a layout is so I can animate it easily.

  • Apple may not reject your app (well, they probably don't care unless it sells really well), but some of the hardcore users might be 'offended' by the inconsistent experience. If you want to be consistent across platforms, why not develop a web application instead? – Michael Lai May 16 '16 at 23:17

"Consistent UI as opposed to native experience" is a contradiction in terms: if you break the native interface conventions, you are by definition not providing a consistent UI for your users.

Your application doesn't exist in a vacuum. Users switch between apps frequently, especially on mobile devices, so it is important that your app follows the same interface conventions as the other apps on the device. Otherwise yours will feel jarring and uncomfortable, at best like a lazy port from a different OS.

(Material UI on iOS is a sterling example of this, though for atypical reasons. Bear in mind that Google is explicitly attempting to position Material as "a new approach to cross-product, cross-platform design"... which by strange coincidence also just happens to be the native UI of their own competitor platform to iOS. In other words their use of Material on iOS is as much a competitive beachhead as a decision based on usability.

A few iOS developers have been willing to jump on their bandwagon but even its biggest proponents only go so far:

it is important to stay true to the operating systems nature. Forcing a user to adapt or take on new sets of habits within an app could cause great confusion. It is important to intelligently incorporate various elements of Material Design but it is imperative not to confuse or undermine the user in the process.

For what it's worth I personally rather like Material UI, but I'd never consider using it on an iOS app, no more than I'd use the iOS UI on Android.)

Following each platform's native UI conventions is most important for common functionality that users will encounter in many apps (such as search, task bars, and top-level navigation). It is somewhat less important for functionality that may be unique to your application, for which users won't have pre-established expectations or muscle memory. In some cases (games, mostly) an immersive, distinct experience is actually desirable, but it doesn't sound like that's your situation.

Xamarin provides native(ish) UI libraries for the platforms it supports. You should use them unless you have a good reason not to. ("Because it's easier" is not a good reason.)

| improve this answer | |
  • Consistency does have to be evaluated in the correct context. Consistency to the native interface conventions versus consistency across platforms would not be an issue when it comes to web applications (at least not as much as developing natively). I don't think the application of Windows Metro (even by Microsoft themselves) or Material UI is consistent by any standard (when you look across the board), but within smaller or more defined context they might be consistent. – Michael Lai May 16 '16 at 23:19
  • I'd make the argument that web applications as a category constitute their own "platform" with its own specific set of design principles and user expectations (along with some minor cosmetic variation depending on browser and operating system). But the question was about native mobile development; there, cross-platform "consistency" might serve the developer's convenience, but certainly not the end user's. – Daniel Beck May 17 '16 at 0:15

Just look at it. Stack exchange UI design that isn't platform specific. So should your design be, but only if you make a simple appealing design, and not an overcomplicated grey mess of buttons (seen that one before). If it's good than yes, use custom UI, if no, then use built in UI.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.