2017-02-28 3 views
0

Ich versuche, Peek und Pop mit dem Inhalt einer UIStackView zu implementieren. Das Problem ist, dass die Überlagerung (der Teil, der nicht unscharf ist) während der flachen Presse nicht den richtigen Inhalt enthält. Es ist an der richtigen Stelle, da es direkt unter meinem Finger ist, aber der Inhalt scheint aus anderen Teilen der Sicht genommen werden: exampleUIStackView Peek und Pop Overlay glitch

Schritte zum Reproduzieren:

  1. öffnet ein leeres iOS-Projekt mit Storyboards
  2. eine UIStackView auf die view-Controller Ansicht
  3. hinzufügen nächsten Nachbarn Einschränkungen von allen vier Seiten des Stapels Ansicht gleich 0
  4. Ersetzen Sie den Inhalt der

  5. hinzufügen ViewController.swift mit dem folgenden Code:

    import UIKit 
    
    class ViewController: UIViewController { 
        @IBOutlet var stackView: UIStackView! 
    
        override func viewDidLoad() { 
         super.viewDidLoad() 
    
         registerForPreviewing(with: self, sourceView: stackView) 
    
         let loremIpsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sed feugiat ligula. Sed in rutrum lacus, vel auctor felis. Vivamus molestie felis nisi. Mauris euismod eros vitae libero commodo porttitor. Nam posuere, dui vitae aliquam mollis, quam mauris tempus turpis." 
    
         let label = UILabel() 
         label.numberOfLines = 0 
         label.text = repeatElement(loremIpsum, count: 4).joined(separator: "\n\n") 
         stackView.addArrangedSubview(label) 
        } 
    } 
    
    extension ViewController: UIViewControllerPreviewingDelegate { 
        func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? { 
         previewingContext.sourceRect = CGRect(x: location.x - 50, y: location.y - 50, width: 100, height: 100) 
         return storyboard?.instantiateInitialViewController() 
        } 
    
        func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) { 
         present(viewControllerToCommit, animated: true) 
        } 
    } 
    
  6. Führen Sie die App auf Ihrem (physikalischen) Gerät und Kraft berührt überall

Mache ich etwas falsch, oder ist das ein Fehler in UIKit?

Edit: Das ist, wie ich es verhalten erwartet: example

Antwort

1

Ersetzen

registerForPreviewing(with: self, sourceView: stackView) 

von

registerForPreviewing(with: self, sourceView: view) 

das Problem gelöst. Ich vermute immer noch, dass es sich um einen Fehler handelt, aber das ist zumindest ein Workaround.

Verwandte Themen