У меня есть такое приложение, как читалка. Когда я касаюсь правого края экрана, я перехожу на следующую страницу. Когда я касаюсь левого края экрана, я перехожу на предыдущую страницу. Мои страницы содержат изображения. Изображение полноэкранного размера и на 20 пикселей больше от одного из краев экрана. И когда я показываю страницу, я хочу, чтобы изображение перемещалось вправо от 0pt до 20pt или влево от 0pt до -20pt в зависимости от свойства imageDirection из файла json. Для этого я использую этот код: контейнер чтения:
Что у меня есть:
Все работает нормально, когда я переворачиваю страницу и жду завершения анимации. Но когда я не дожидаюсь завершения анимации и перехожу на следующую страницу, я вижу, что текущая страница с изображением быстро переходит на 0, а затем я вижу анимацию для следующей страницы.
Чего я хочу:< /p>
когда я не жду завершения анимации текущей страницы и перехожу к следующей странице, я не вижу, как текущая страница переходит на 0. Я хочу видеть плавное переворачивание
Видео, воспроизводящее проблему:
По этому адресу видео Я всегда перехожу на следующую страницу, не дожидаясь завершения анимации текущей страницы. На первой, второй и третьей страницах все работает нормально, но со следующими изображениями возникают проблемы https://drive.google.com/file/d/1cms3G_ ... sp=sharing
У меня есть такое приложение, как читалка. Когда я касаюсь правого края экрана, я перехожу на следующую страницу. Когда я касаюсь левого края экрана, я перехожу на предыдущую страницу. Мои страницы содержат изображения. Изображение полноэкранного размера и на 20 пикселей больше от одного из краев экрана. И когда я показываю страницу, я хочу, чтобы изображение перемещалось вправо от 0pt до 20pt или влево от 0pt до -20pt в зависимости от свойства imageDirection из файла json. Для этого я использую этот код: [b]контейнер чтения:[/b] [code]class ReaderController: UIViewController {
var pagesData = [PageData]() var imageArray: [UIImage] = [] var index = Int() var pageIndex: Int = -1
let pageContainer: UIView = { let view = UIView() view.translatesAutoresizingMaskIntoConstraints = false return view }()
let pageViews: [PageLayout] = { let view = [PageLayout(), PageLayout()] view[0].translatesAutoresizingMaskIntoConstraints = false view[1].translatesAutoresizingMaskIntoConstraints = false return view }()
override func viewDidLoad() { super.viewDidLoad()
loadImages() setupViews() setupConstraints()
pageViews[0].index = index pageViews[0].imageArray = imageArray pageViews[1].index = index pageViews[1].imageArray = imageArray pageViews[0].pageIndex = pageIndex pageViews[1].pageIndex = pageIndex
func loadData(fileName: Any) -> PagesData { var url = NSURL() url = Bundle.main.url(forResource: "text", withExtension: "json")! as NSURL let data = try! Data(contentsOf: url as URL) let person = try! JSONDecoder().decode(PagesData.self, from: data) return person }
func loadImages() { for imageIndex in 1...18 { imageArray.append(UIImage(named: "page\(imageIndex)")!) } }
override func touchesBegan(_ touches: Set, with event: UIEvent?) { for touch in touches { if(touch.view == pageViews[0] || touch.view == pageViews[1]) { let location = touch.location(in: view.self) if view.safeAreaInsets.left > 30 { if (location.x > self.view.frame.size.width - (view.safeAreaInsets.left * 1.5)) { pageTransition(animated: true, direction: "fromRight") } else if (location.x < (view.safeAreaInsets.left * 1.5)) { pageTransition(animated: true, direction: "fromLeft") } } else { if (location.x > self.view.frame.size.width - 40) { pageTransition(animated: true, direction: "fromRight") } else if (location.x < 40) { pageTransition(animated: true, direction: "fromLeft") } } } } }
func pageTransition(animated: Bool, direction: String) { let result = loadData(fileName: pagesData)
switch direction { case "fromRight": pageIndex += 1 case "fromLeft": pageIndex -= 1 default: break }
var imageArray: [UIImage] = [] var index = Int() var pageIndex = Int()
var imageDirection = ""
var imageViewTopConstraint = NSLayoutConstraint() var imageViewBottomConstraint = NSLayoutConstraint() var imageViewLeadingConstraint = NSLayoutConstraint() var imageViewTrailingConstraint = NSLayoutConstraint()
private let imageView: UIImageView = { let image = UIImageView() image.contentMode = .scaleAspectFill image.translatesAutoresizingMaskIntoConstraints = false return image }()
private let textLabel: UILabel = { let label = UILabel() label.translatesAutoresizingMaskIntoConstraints = false return label }()
let scenes = UIApplication.shared.connectedScenes let windowScene = scenes.first as? UIWindowScene let window = windowScene?.windows.first let safeArea = window?.safeAreaInsets
{ "textData" : "4", "imagePosition" : "right", }, ] } [/code] Что у меня есть: Все работает нормально, когда я переворачиваю страницу и жду завершения анимации. Но когда я не дожидаюсь завершения анимации и перехожу на следующую страницу, я вижу, что текущая страница с изображением быстро переходит на 0, а затем я вижу анимацию для следующей страницы. Чего я хочу:< /p> когда я не жду завершения анимации текущей страницы и перехожу к следующей странице, я не вижу, как текущая страница переходит на 0. Я хочу видеть плавное переворачивание Видео, воспроизводящее проблему: По этому адресу видео Я всегда перехожу на следующую страницу, не дожидаясь завершения анимации текущей страницы. На первой, второй и третьей страницах все работает нормально, но со следующими изображениями возникают проблемы https://drive.google.com/file/d/1cms3G_o8W8bdGj9t5gAnItPvzFN7Z3mG/view?usp=sharing