2015-11-24 9 views
10

Mit dem 3D-Touch-Peek und Pop-Funktionalität, was ist der effektivste Weg, um die Fähigkeit zur Nachahmung unten dargestellt (swipe die „guckte“ Inhalt von Seite zu Seite, eine Aktion auszuführen)? Der folgende Screenshot stammt von der nativen E-Mail-App von iOS.3D-Touch-Peek Swipe wie Mail

Mail Swipe 3D Touch - Unread Mail Swipe 3D Touch - Trash

+1

Es ist erwähnenswert, dass, sofern Facebook nicht zugelassen ist, private APIs zu verwenden, ihre App ermöglicht es Ihnen, Seite an Seite auf Alben zu schieben, um mehr Bilder zu sehen, so gibt es Apps im App Store mit dieser Funktionalität. –

+2

@DougSmith Sie können die gesamte UIKit 3D Touch-Funktionalität selbst einschließlich dieses neu implementieren. Facebook hat es implementiert, indem er manuell auf den Fork-Gesten-Erkenner hört. –

Antwort

9

aktualisieren

Sie können diesen Effekt auf iOS 10 replizieren. Es gibt eine neue Reihe von APIs mit den Namen UIPreviewInteraction und UIPreviewInteractionDelegate, die eine benutzerdefinierte Präsentation für Peek/Pop-Interaktionen ermöglichen. Ich empfehle dringend zu beobachten A Peek at 3D Touch von der diesjährigen WWDC.

Original-Antwort

am iOS Runtime Headers suchen, ist es eine Klasse UIPreviewPresentationController genannt. Das ist der Controller verantwortlich für Peeks. Darin befinden sich Verweise auf die Objekte leadingPreviewAction und trailingPreviewAction. Diese haben entsprechende Eigenschaften, die sich mit Randbedingungen und Zentren befassen. Geht man durch die Verwendung der Begriffe führenden und Hinter (wie im Auto-Layout), entsprechen diese können/rechts Aktionselemente nach links.

Das ist Spekulation, aber ich denke, diese verwandten Privatunterricht (_UIPreviewQuickActionView) steuern das Verhalten Sie suchen. Diese sind momentan nicht verfügbar.

Ebenso ist die Dokumentation für UIPreviewAction sagt:

Eine Vorschau Aktion oder Peek schnelles Handeln unter einen Peek angezeigt wird, wenn ein Benutzer den peek klaut nach oben. Bei einer Aktion zum schnellen Suchen wird in der Regel ein Deep-Link zu Ihrer App ausgewählt, der über einen Titel, einen Stil und einen Handler verfügt.

+1

Und um Ihre Frage zu beantworten "Was ist der effektivste Weg, die Fähigkeit zu imitieren", würden Sie am Ende die Funktionalität neu erstellen wie @DougSmith sagte. Ich würde hier beginnen (https://github.com/marmelroy/PeekPop) für Ideen, wie man das macht. –

+2

Durch Antwort, danke! Besonders interessant sind die Informationen zu den iOS Runtime Headers, denen ich zuvor noch nicht begegnet bin. Das macht auf jeden Fall mehr Sinn bei @Chris. – kbpontius

2

verwenden Peek Schnellaktionen, Ihre detailledViewControler (oder was auch immer Sie es genannt) previewActionItems wie das außer Kraft setzen sollte:

lazy var previewActions: [UIPreviewActionItem] = { 
     func previewActionForTitle(title: String, style: UIPreviewActionStyle = .Default) -> UIPreviewAction { 
      return UIPreviewAction(title: title, style: style) { previewAction, viewController in 
       guard let detailViewController = viewController as? DetailViewController, 
          item = detailViewController.detailItemTitle else { return } 

       print("\(previewAction.title) triggered from `DetailViewController` for item: \(item)") 
      } 
     } 

     let action1 = previewActionForTitle("Default Action") 
     let action2 = previewActionForTitle("Destructive Action", style: .Destructive) 

     let subAction1 = previewActionForTitle("Sub Action 1") 
     let subAction2 = previewActionForTitle("Sub Action 2") 
     let groupedActions = UIPreviewActionGroup(title: "Sub Actions…", style: .Default, actions: [subAction1, subAction2]) 

     return [action1, action2, groupedActions] 
    }() 


override func previewActionItems() -> [UIPreviewActionItem] { 
    return previewActions 
} 

Sie den gesamten Code finden Sie hier: https://developer.apple.com/library/ios/samplecode/ViewControllerPreviews/ViewControllerPreviewsUsingtheUIViewControllerpreviewingAPIs.zip

+0

Diese definitiv bringt mich in die richtige Richtung, aber der Code in den darin enthaltenen Link scheint nicht der Lage zu sein, von Seite zu Seite wischen einmal 3D-Touch auf jede dieser drei Reihen wie die Mail-App kann verwendet wird. Mache ich etwas falsch? – kbpontius

+1

Ich glaube, dass es keine Möglichkeit gibt, mit öffentlichen APIs zu erreichen, was Sie wollen. Ganz einfach, weil die öffentliche API nur aus zwei oder drei Methoden besteht und keine anderen Optionen als "UIPreviewActionItem" bietet, die nur drei "Stile" haben. Ich glaube, dass Apple diese eine für sich selbst hält ... – AncAinu

+0

Das ist, was ich hatte Angst. Es wäre schön, mehr Dokumentation dazu zu sehen. Wenn Sie konkrete Informationen darüber finden können, würde ich Ihnen gerne das Kopfgeld ausstellen.Danke für deine bisherigen Gedanken. – kbpontius