Check iphone model swift

Detect current device with UI_USER_INTERFACE_IDIOM() in Swift

What is the equivalent of UI_USER_INTERFACE_IDIOM() in Swift to detect between iPhone and iPad?

I get an Use of unresolved identifier error when compiling in Swift.

17 Answers 17

When working with Swift, you can use the enum UIUserInterfaceIdiom , defined as:

So you can use it as:

Or with a Switch statement:

UI_USER_INTERFACE_IDIOM() is an Objective-C macro, which is defined as:

Also, note that even when working with Objective-C, the UI_USER_INTERFACE_IDIOM() macro is only required when targeting iOS 3.2 and below. When deploying to iOS 3.2 and up, you can use [UIDevice userInterfaceIdiom] directly.

You should use this GBDeviceInfo framework or .

Apple defines this:

so for the strict definition of the device can be used this code

how to use

to detect iOS version

how to use

Swift 2.0 & iOS 9 & Xcode 7.1

Swift 3.0 and Swift 4.0

Use UITraitCollection. The iOS trait environment is exposed though the traitCollection property of the UITraitEnvironment protocol. This protocol is adopted by the following classes:

  • UIScreen
  • UIWindow
  • UIViewController
  • UIPresentationController
  • UIView

I do in that way:

It shows the name of the device.

To check if is iPad or iPhone:

Swift 4.2 — 5.1 Extension

Usage

Try adding an extension like this:

This is how you will use it:

EDIT For simulator, you can try a solution here

Swift 2.x:

Adding to Beslav Turalov answer’s the new entry iPad Pro can easily be find with this line

to detect iPad Pro

Swift 3 (TV and car added):

USAGE:

In swift 4 & Xcode 9.2 , you can detect if a device is iPhone/iPad by below ways.

Try this for check current device is iPhone or iPad:

Swift 5

Use:

Since iOS 13, UI_USER_INTERFACE_IDIOM has been deprecated. If your code is still in Obj-C , you can use the following:

Thank you everybody support :))

Swift 2.0 & iOS 7+ / iOS 8+ / iOS 9+

Use :

FYI, I have used UI_USER_INTERFACE_IDIOM() for my app written in Swift. The app can be compiled well with XCode 6.3.1 without any warning on that command, runs well on Simulator (with any selected devices) and on all my real devices (iPhone, iPad) with iOS versions from 7.1 to 8.3.

However, the app crashed on Apple reviewers’ devices (and was refused). That took me few days to detect the problem with few more re-uploads to iTunes Connect.

Источник

Адекватное MVC для начинающих и не только

Небольшое вступление

Всем 404! Большинство IOS-разработчиков не понимают как работать с Apple-MVC. Из-за чего появляется необоснованная критика, маленькие проекты стараются писать на архитектурах для этого не предназначенных, ViewController’ы становятся огромными, не читаемыми и тд.

Читайте также:  Что делать пропала сеть айфон после обновления

В этой статье я покажу простой способ как облегчить жизнь себе, жизнь себе, заглянувшему в проект через 3 месяца, и, конечно, всем ViewController’aм. Для кого он подойдет? Для начинающих разработчиков или разработчиков с небольшими проектами, которые в итоге получатся с чистой и красивой структурой.

Где же все тонут?

Для начала давайте посмотрим на всеми любимое стандартное красивое MVC.

А теперь посмотрим на то, что осуществляется большинством.

Классно? Нет! Поэтому мы так делать не будем, а реализуем первый вариант.

Делаем структуру красоте

Создаем обычный Single View App. В поле выбора языка я ставлю Swift, больше ничего не включая: ни тестов, ни CoreDat’ы.

Я буду показывать на примере создания витрины магазина, т.к. нам нужно затронуть все части MVC, будем брать данные из model в controller распределять и показывать во view.

Окей, задача есть, пустой проект есть. Теперь нырнем в проект, я распределю все по папкам и создам пустые файлы, чтобы вы понимали где они должны лежать в дальнейшем. Также прикрепил storyboard структуру, чтобы не тратить время в дальнейшем. Не забудьте указать reuse id у cell, я написал ProductCell.

Красиво? Конечно красиво. Продолжаем…

Немного магии swift

Сейчас можно и к реализации приступить. Начнем с простого, view. Нам нужно создать все IBOutlets, и настройки нашего представления.

Так будет выглядеть наша view, в configure() функции я лишь задаю настройки, но view нужно использовать и для анимаций, и для смены названия title’а кнопок и тд… Так примитивно скажете? Но почему тогда так мало используют это преимущество?! Вот так я например использую анимации в controller’e: view.hideBorders(self) и все, а view уже сделает красивую анимацию.

Огонь! Но вернемся к нашему проекту, время реализовать model. И так у нас будут товары, и пусть будут их группы.

Замечательно, наша модель готова, осталось собрать контроллер, давайте преступим. первым делом нужно будет создать две наших главных сущности модель и вью. Затем я вынесу настройки контроллера в private extension и передам данные из model в нашу таблицу.

Обещал обьяснить про view, не забыли?) Наша shopView — это вычисляемое свойство. Здесь мы проверяем isViewLoaded, чтобы не вызвать непреднамеренную загрузку view при доступе к этому свойству. Если представление уже загружено, мы принудительно преобразуем его в ShopView.

Вот и все, наше mvc готово! Остается нажать command+R и увидеть три ячейки.

Источник

Как получить марку и модель устройства на iOS?

Мне было интересно, можно ли определить тип iPhone (например) для текущего устройства? Я знаю, что можно получить модель через
NSString *deviceType = [[UIDevice currentDevice] model];
который просто возвращает, есть ли у меня «iPhone» или «iPod», НО мне было интересно, можно ли определить /узнать, есть ли у меня iPhone 3GS против iPhone 4 против iPhone 4S (на самом деле все, что я действительно хочу сделать, это определить, есть ли у меня 3G или нет, потому что я делаю довольно интенсивные графические вещи) .

Так что да, дайте мне знать, спасибо!

14 ответов

Либо попробуйте эту библиотеку: http://github.com/erica/uidevice-extension/ (Эрика Садун). (Библиотеке 7-8 лет, и, следовательно, она устарела)

Читайте также:  Как исправить айфон отключен

ИЛИ Вы можете использовать этот метод:

Номер модели устройства можно узнать с помощью uname из sys /utsname.h. Например:

Objective-C

Swift 3

Результат должен быть следующим:

Расширяя ответ OhhMee выше, я добавил несколько отказоустойчивых для поддержки будущих устройств, которые (пока) не включены в список:

Я также пропустил подробную информацию (например, «модель A1507, A1516, A1526 (Китай), A1529 | Global») и поместил ее в комментарии вместо этого, если вы хотите использовать ее в качестве строк, обращенных к пользователю, а не урод их.

Изменить. Этот ответ предоставляет аналогичную реализацию с использованием Swift 2.

Изменить 2 . Я только что добавил модели iPad Pro (оба размера). Для дальнейшего использования, номера моделей /и т.д. можно найти в вики iPhone .

Изменить 3: добавьте поддержку iPhone XS, iPhone XS Max и iPhone XR.

Я создал plist-файл, чтобы помочь вам получить полное имя для каждого устройства (исходный код в конце моего ответа)

На основании ответа OhhMee вы можете использовать его следующим образом:

Swift 4.0

Не забудьте добавить #import в заголовок моста.

Цель C

Файл plist:

Я оптимизировал реализацию NicolasMiari и добавил Simulator здесь:

Категория для ухода от описания NSString

В общем, желательно избегать произвольных сравнений строк в вашем коде. Лучше обновить строки в одном месте и спрятать волшебную строку из вашего приложения. Для этой цели я предоставляю категорию в UIDevice .

Для моих конкретных потребностей мне нужно знать, какое устройство я использую, без необходимости знать особенности сетевых возможностей, которые можно легко получить другими способами. Таким образом, вы найдете более грубый enum , чем постоянно растущий список устройств.

Обновление — это добавление устройства в перечисление и таблицу поиска.

UIDevice + NTNUExtensions.h

UIDevice + NTNUExtensions.m

Имя устройства и имена компьютеров на основе аппаратного обеспечения реального устройства iOS

Мое решение этой проблемы в основном связано с ответом @NicolasMiari в этой теме. Отдельный служебный класс имеет предопределенный набор имен устройств и компьютеров, а затем в зависимости от имени реальной машины извлекает имя устройства.

Примечание. . Этот ответ и связанный с ним проект GitHub были обновлены для определения текущих последних iPhone (iPhone 8, 8+, X) по состоянию на октябрь 2017 года. И это работает и на iOS11 . Пожалуйста, посетите репозиторий GitHub и посмотрите, и дайте мне обратную связь, если что-то не так.

Я добавил эту реализацию и несколько других удобных служебных методов в класс и разместил ее в этом репозитории GitHub. . А также вы можете найти актуальный список информации об устройстве на этой странице Wiki .

Пожалуйста, посетите его и получите доступ к нему.

Update:

Возможно, вам потребуется импортировать фреймворк sys,

Источник

Check iphone model swift

Easy way to detect iOS device properties, OS versions and work with screen sizes. Powered by Swift.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Easy way to detect device environment:

AssistantKit is available through CocoaPods. To install it, simply add the following line to your Podfile:

Device version information

To get the current device type, use:

You can check the exact device version with next code. All possible values of version can be found in the Version enum, located in the Version.swift file.

Читайте также:  Как экспортировать заметки с айфона

There are few properties that detect device type

To get raw device code use

Device screen parameters

Detecting screen size can be detected with next code. All possible values could be found in the Screen enum, located in Screen.swift .

Screen is cinfirming to Comparable protocol:

Detecting screen family

Often it is required to assign different parameters based on specific screen resolution. There are 3 methods that will help you to detect what parameters to use. But first of all let me introduce ScreenFamily .

This is enum that breaks all possible screens into 3 groups:

  • .old : Reproduce old iPhones with 3.5 and 4.0 inches screens
  • .small : Other iPhones/iPods without iPhone 6 Plus
  • .medium : iPhone 6 Plus and iPad Mini
  • .big : iPad and iPad Pro

You can detect screen family by:

And now back to methods:

Value by device type

To assign different values for iPhone and iPad devices you can use:

On iPhones your font size will be 13.0, on iPads 15.0

Value by ScreenFamily

Another method based on ScreenFamily :

In this case for small screens your font will be 12.0, for medium 14.0 and for big 15.0 inches.

Important notice: By default if screen family can not be detected size method will assign small value.

Value by exact screen size

Also you can return value for specific screen size. There is another size method you can use. Incoming parameter should be a screen size. If it is not defined nearest value will be used. Code example:

Important notice: This method can return nil if you pass an empty array as a parameter. Be careful with implicit unwrapping.

After that your font will be:

  • 12 for 3.5″ inches (older devices)
  • 13 for iPhone 5, 5S
  • 14 for iPhone 6, 6Plus and iPad mini
  • and 15 for other iPads

Also there is a property to detect if it’s retina display:

There are two properties that will help you to know current orientation:

Slide Over / Multitasking layout for iPad

To detect slide over layout on iPads just call:

Detecting and comparing iOS version

You can detect iOS version in runtime. There are next different methods that will help you to do it:

There are next constants representating Main iOS versions:

Working with directories

There are few helper methods to make access to Documents and Caches directoies easier. Take a look at code examples:

Used to detect environment options. Right now there is only one property:

There is a way to get battery state and level with these methods. It will enable monitoring if it’s not enabled yet.

Write me or make a pull request if you have any ideas what else functionality can be useful in this repo.

More Device-detecting libs

AssistantKit is available under the MIT license. See the LICENSE file for more info.

About

Easy way to detect iOS device properties, OS versions and work with screen sizes. Powered by Swift.

Источник

Оцените статью