[решено] Горизонтальный свайп


#1

В настройках икскода есть “cover vertical” для сеги, но нет “cover horizontal”. В интернетах есть примеры реализации горизонтальной прокрутки, но настолько сложно всё и очередные костыли какие-то. Подскажите, пожалуйста, может возможно это реализовать просто, может уже есть такой метод какой-то в свифте?


#2

не совсем понял связь между горизонтальным скролом и сигвеем.
можете показать пример что вы хотите?


#3

Это я :blonde_woman: не так, видимо выразилась, cover horizontal нужен, а там только cover vertical есть

la


#4

и вам именно Present Modally нужен?


#5

Думаю не обязательно, просто у меня почему-то сложилось внутреннее очучение, что если использовать Present Modally, то это “качественно” … открылось окно, закрылось окно, без лишних следов, если можно так выразиться, я просто боюсь такого эффекта, что очень много раз если открывать в другом режиме, то они как-то наслаиваются друг на друга и потом всё тупит, у меня так в некоторых сторонних приложениях было и приходилось перезапускать.


#6

делайте обычный Push и по дефолту оно появится с правого края, если нужно скрыть navigation bar, делаете в viewWillAppear.
если же Push не подойдет, скину код для Present Modally, только у меня он работает сверху.


#7

Скиньте, пожалуйста, попробую


#8
    @IBOutlet weak var containerTopMargin: NSLayoutConstraint!
    @IBOutlet weak var containerHeight: NSLayoutConstraint!
    
    private var defContainerHeight: CGFloat!
    private var defViewAlpha: CGFloat!
    
    private func arrangeViews(isStart: Bool, completion: (() -> ())? = nil) {
        containerTopMargin.constant = isStart ? defContainerHeight : -containerHeight.constant
        
        UIView.animate(withDuration: 0.3, animations: {
            self.view.layoutIfNeeded()
            self.view.alpha = isStart ? self.defViewAlpha : 0
        }) { (_) in
            completion?()
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        defViewAlpha = view.alpha
        defContainerHeight = containerTopMargin.constant
        containerHeight.constant = 300
        
        // disable views
        // we will show views with animation later
        view.alpha = 0
        containerTopMargin.constant -= containerHeight.constant
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        arrangeViews(isStart: true)
    }

И нужно убрать галочку с Animates


#9

СПАСИБО! :hugs::hugs::hugs: