iPad için birden çok pencere
iOS 13 artık iPad'de aynı uygulama için yan yana pencereleri destekliyor. Bu, pencereler arasında yeni deneyimler ve sürükleyip bırakma etkileşimleri sağlar. Bu belge, uygulamanızı bu özelliği destekleyecek şekilde nasıl ayarlayabileceğinizi gösterir ve bu yeni özellikleri tanıtır.
Proje Yapılandırması
Projenizi birden çok pencere için yapılandırmak için, iOS'a NSUserActivityTypes
uygulamanızın bu tür etkinlikleri işleyeceğini bildirmek ve UIApplicationSceneManifest
birden çok pencere için etkinleştirmek UIApplicationSupportsMultipleScenes
ve UISceneConfigurations
sahnenizi bir görsel taslakla ilişkilendirmek için öğesini düzeltininfo.plist
.
<key>NSUserActivityTypes</key>
<array>
<string>com.xamarin.Gallery.openDetail</string>
</array>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<true/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>SceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>Main</string>
</dict>
</array>
</dict>
</dict>
Birden Çok Pencere Açma
Uygulamanız açık ve bir iPad'de çalışırken, bu uygulamanın iOS'un varsayılan olarak işlediği birden çok pencere açmanın birkaç yolu vardır.
- Uygulama Kullanıma Sunma - Uygulamanız açıkken bu moda girmek için dock'taki uygulama simgesine dokunun.
- Slide Over - Kayan bir pencereye sahip olmak için uygulama simgesini çalışan uygulamanızın üst kısmındaki dock'tan sürükleyin.
- Bölünmüş Ekran - Uygulama simgesini dock'tan iPad ekranının kenarına sürükleyerek yan yana yeni bir pencere oluşturun.
Birden çok pencere moduna geçmek için ek etkileşimler uygulamanızın içinden kullanılabilir.
Uygulamadan sürükleyin- Önceki örneklerde uygulama simgenizi sürüklemek gibi yeni NSUserActivity
bir başlangıç yapmak için uygulamanızda sürükleme etkileşimini kullanın.
Sürükle ve bırak etkileşimini kullanırken, iOS'un sizin için açılmasını istediğiniz yeni pencereye geçirilecek verileri oluşturur NSUserActivity
ve ilişkilendirirsiniz.
public UIDragItem [] GetItemsForBeginningDragSession (UICollectionView collectionView, IUIDragSession session, NSIndexPath indexPath)
{
var selectedPhoto = GetPhoto (indexPath);
var userActivity = selectedPhoto.OpenDetailUserActivity ();
var itemProvider = new NSItemProvider (UIImage.FromFile (selectedPhoto.Name));
itemProvider.RegisterObject (userActivity, NSItemProviderRepresentationVisibility.All);
var dragItem = new UIDragItem (itemProvider) {
LocalObject = selectedPhoto
};
return new [] { dragItem };
}
Yukarıdaki kodda model nesnesinin selectedPhoto
adlı OpenDetailUserActivity()
bir NSUserActivity
döndürme yöntemi vardır. Sürükleme hareketi tamamlandığında, UIDragItem
ile ile aracılığıyla öğesini sunar userActivity
NSItemProvider
.
Açık Eylemler - Düğmeler veya bağlantılardaki kullanıcı hareketleri yeni bir pencere açabilme olanağı sunar.
'UIApplication
den çağrısı RequestSceneSessionActivation
yaparak yeni UISceneSession
bir başlangıç yapabilirsiniz. Mevcut bir sahne zaten varsa, bunu kullanmanız gerekir. Varsayılan olarak sizin için yeni bir sahne oluşturulur.
public void ItemSelected(UICollectionView collectionView, NSIndexPath indexPath)
{
var userActivity = selectedPhoto.OpenDetailUserActivity ();
UIApplication.SharedApplication.RequestSceneSessionActivation(
sceneSession: null,
userActivity: userActivity,
options: null,
errorHandler: null
);
}
Bu örnekte, userActivity
açık bir kullanıcı eylemine RequestSceneSessionActivation
dayalı olarak uygulamanın yeni bir penceresini açmak için yöntemine geçirilen tek değerdir; bu durumda bir ItemSelected
UICollectionView
işleyicisi.