2017-02-28 79 views
0

我正在試圖用UIStackView的內容實現Peek和Pop。問題在於淺印刷過程中的覆蓋層(未模糊的部分)不包含正確的內容。這是在正確的地方,因爲它是正確的下面我的手指,但內容似乎是從視圖帶往別處:exampleUIStackView Peek和Pop覆蓋小故障

重現步驟:

  1. 打開一個空的iOS項目中使用故事板
  2. 一個UIStackView添加到視圖控制器的看法
  3. 從等於堆棧視圖四邊添加的近鄰約束0
  4. 替換的內容ViewController.swift用下面的代碼:

    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) 
        } 
    } 
    
  5. 你的(物理)設備和力觸摸運行應用程序的任何地方

我做得不對,或者這是UIKit中的錯誤嗎?

編輯:這是我沒有料到它的行爲:example

回答

1

通過

registerForPreviewing(with: self, sourceView: view) 

更換

registerForPreviewing(with: self, sourceView: stackView) 

解決了這個問題。我仍然懷疑這是一個錯誤,但至少這是一個解決方法。