Введение в iOS 6
iOS 6 включает различные новые технологии для разработки приложений, которые Xamarin.iOS 6 приносит разработчикам C#.
С iOS 6 и Xamarin.iOS 6 разработчики теперь имеют множество возможностей для создания приложений iOS, включая те, которые предназначены для iPhone 5. В этом документе перечислены некоторые из более интересных новых функций, доступных и ссылок на статьи для каждого раздела. Кроме того, он касается нескольких изменений, которые будут важны, как разработчики переходят на iOS 6 и новое разрешение iPhone 5.
Общие сведения о представлениях коллекции
Представления коллекции позволяют отображать содержимое с помощью произвольных макетов. Они позволяют легко создавать макеты, такие как сетка из поля, а также поддерживают пользовательские макеты. Дополнительные сведения см. в руководстве по представлению коллекций .
Введение в PassKit
Платформа PassKit позволяет приложениям взаимодействовать с цифровыми проходами, управляемыми в приложении Passbook. Дополнительные сведения см. в руководстве по пакету pass kit.
Общие сведения о EventKit
Платформа EventKit предоставляет способ доступа к данным календарей, событий календаря и напоминаний, которые хранятся в базе данных календаря. Доступ к календарям и событиям календаря доступен с iOS 4, но iOS 6 теперь предоставляет доступ к данным напоминаний. Дополнительные сведения см. в руководстве по I ntroduction to EventKit .
Общие сведения о социальной платформе
Social Framework предоставляет единый API для взаимодействия с социальными сетями, включая Twitter и Facebook, а также SinaWeibo для пользователей в Китае. Дополнительные сведения см. в руководстве по социальной платформе .
Изменения в StoreKit
Apple представила две новые функции в Store Kit: приобретение и скачивание содержимого iTunes или App Store из приложения и размещение файлов содержимого для покупок в приложении!. Дополнительные сведения см. в руководстве по изменению комплекта для магазина.
Другие изменения
ViewWillUnload и ViewDidUnload устарели
Методы ViewWillUnload
и ViewDidUnload
методы UIViewController
больше не вызываются в iOS 6. В предыдущих версиях iOS эти методы могут использоваться приложениями для сохранения состояния перед выгрузкой представления и кодом очистки соответственно.
Например, Visual Studio для Mac создаст метод с именем ReleaseDesignerOutlets
ниже, который затем будет вызываться изViewDidUnload
:
void ReleaseDesignerOutlets ()
{
if (myOutlet != null) {
myOutlet.Dispose ();
myOutlet = null;
}
}
Однако в iOS 6 больше не требуется вызывать ReleaseDesignerOutlets
.
Для кода очистки следует использовать DidReceiveMemoryWarning
приложения iOS 6. Однако код, который вызывает Dispose
, следует использовать экономно и только для объектов с интенсивным объемом памяти, как показано ниже:
if (myImageView != null){
if (myImageView.Superview == null){
myImageView.Dispose();
myImageView = null;
}
}
Опять же, вызов Dispose
, как описано выше, редко требуется. Как правило, большинство приложений должны выполняться для удаления обработчиков событий.
В случае сохранения состояния приложения могут выполнять это ViewWillDisappear
и ViewDidDisappear
вместо ViewWillUnload
него.
Разрешение iPhone 5
Устройства iPhone 5 имеют разрешение 640x1136. Приложения, предназначенные для предыдущих версий iOS, будут отображаться в почтовом ящике при запуске на iPhone 5, как показано ниже:
Чтобы приложение отображалось в полноэкранном режиме на iPhone 5, просто добавьте изображение Default-568h@2x.png
с разрешением 640x1136. На следующем снимку экрана показана работа приложения после включения этого образа:
Подклассирование UINavigationBar
В iOS 6 UINavigationBar
можно подклассировать. Это позволяет дополнительно контролировать внешний вид и чувствовать себя UINavigationBar
. Например, приложения могут подкласса добавлять подвиды, анимировать эти представления и изменять границы объекта UINavigationBar
.
В приведенном ниже коде показан пример подкласса UINavigationBar
, который добавляет UIImageView
:
public class CustomNavBar : UINavigationBar
{
UIImageView iv;
public CustomNavBar (IntPtr h) : base(h)
{
iv = new UIImageView (UIImage.FromFile ("monkey.png"));
iv.Frame = new CGRect (75, 0, 30, 39);
}
public override void Draw (RectangleF rect)
{
base.Draw (rect);
TintColor = UIColor.Purple;
AddSubview (iv);
}
}
Чтобы добавить подкласс UINavigationBar
в объект UINavigationController
, используйте UINavigationController
конструктор, который принимает тип UINavigationBar
и UIToolbar
, как показано ниже:
navController = new UINavigationController (typeof(CustomNavBar), typeof(UIToolbar));
Использование этого UINavigationBar
подкласса приводит к отображению представления изображения, как показано на следующем снимке экрана:
Ориентация интерфейса
До приложений iOS 6 можно переопределить ShouldAutorotateToInterfaceOrientation
, возвращая значение true для любой ориентации, поддерживаемой определенным контроллером. Например, следующий код будет использоваться для поддержки только портрета:
public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
{
return (toInterfaceOrientation == UIInterfaceOrientation.Portrait);
}
В iOS 6 ShouldAutorotateToInterfaceOrientation
не рекомендуется.
Вместо этого приложения могут переопределить GetSupportedInterfaceOrientations
контроллер корневого представления, как показано ниже:
public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations ()
{
return UIInterfaceOrientationMask.Portrait;
}
На iPad эта ориентация по умолчанию используется для всех четырех ориентаций, если GetSupportedInterfaceOrientation
она не реализована. На iPhone и iPod Touch по умолчанию используется все ориентации, кроме PortraitUpsideDown
.