Я пытаюсь реализовать Peek и Pop с содержимым файла UIStackView
. Проблема в том, что оверлей (часть, которая не размыта) при неглубоком нажатии не содержит нужного содержимого. Он находится в правильном месте, так как он находится прямо под моим пальцем, но содержимое, кажется, взято из другого места в представлении:
Действия по воспроизведению:
- Откройте пустой проект iOS с помощью раскадровки
- Добавьте
UIStackView
в представление контроллера представления - Добавьте ограничения ближайших соседей со всех четырех сторон представления стека, равные
0
Замените содержимое
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) } }
Запустите приложение на своем (физическом) устройстве и принудительно коснитесь в любом месте.
Я что-то не так делаю, или это ошибка в UIKit?