Как локализовать Autolayout Constraint, добавленный программно в swift

В моем быстром коде я использую ограничения для автоматического размещения. Некоторые добавляются прямо из раскадровки, а некоторые добавляются программно в UIScrollView.

Когда приложение работает в арабской версии (в направлении RTL), ограничения авторазметки, добавленные из раскадровки, автоматически переключаются в направлении RTL без каких-либо усилий, НО те, которые добавлены программно в UIScrollView, не переворачиваются.

Это пример моих ограничений, добавляемых в UISCrollView:

        var previousView: UIView = self.productsScrollView

        for productObj in productsArray {

            let productViewObj: ProductView = ProductView(frame: CGRectMake(0, 0, self.productsScrollView.frame.size.width, self.productsScrollView.frame.size.height), productObj: productObj)

            productViewObj.translatesAutoresizingMaskIntoConstraints = false
            self.productsScrollView.addSubview(productViewObj)


            // Left Constraint
            let leftConstraint = NSLayoutConstraint(item: productViewObj,
                attribute: .Left,
                relatedBy: .Equal,
                toItem: previousView,
                attribute: (previousView === self.productsScrollView) ? .Left : .Right,
                multiplier: 1.0,
                constant: 0.0);
            self.productsScrollView .addConstraint(leftConstraint)

            // Top Constraint
            let topConstraint = NSLayoutConstraint(item: productViewObj,
                attribute: .Top,
                relatedBy: .Equal,
                toItem: self.productsScrollView,
                attribute: .Top,
                multiplier: 1.0,
                constant: 0.0);
            self.productsScrollView .addConstraint(topConstraint)


            previousView = productViewObj

... // width, height constraints



}

...// and left constraint (for the last item) is added here

    self.productsScrollView.layoutIfNeeded()

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

Спасибо

1 ответ

Решение

Вы должны использовать .Leading вместо .Left а также .Trailing вместо .Right для вещей, которые должны изменить направление в зависимости от языкового направления. Вот и вся цель .Leading а также .Trailing,

Другие вопросы по тегам