If you use horizontal axis:
stackView.semanticContentAttribute = .forceRightToLeft
If you use vertical axis:
import UIKit
enum VerticalSemanticContentAttribute {
    case forceTopToBottom, forceBottomToTop
}
final class VerticalStackView: UIStackView {
     var verticalSemanticContentAttribute:  VerticalSemanticContentAttribute = .forceTopToBottom {
        didSet {
             guard oldValue != verticalSemanticContentAttribute else { return }
        
             reverseArrangedSubviews()
        }
    }
    override init(frame: CGRect) {
        super.init(frame: frame)
    
        axis = .vertical
    }
    required init(coder: NSCoder) {
        super.init(coder: coder)
    
        axis = .vertical
    }
}
// MARK: - Private functions
private extension VerticalStackView {
    func reverseArrangedSubviews() {
        let totalCount = arrangedSubviews.count
    
        for (index, view) in arrangedSubviews.enumerated().reversed() where index != 0 { // we don't need to reposition the last item. It's already in the right position
            removeArrangedSubview(view)
            view.removeFromSuperview()
            setNeedsLayout()
            layoutIfNeeded()
        
            let insertIndex = totalCount - index - 1
            insertArrangedSubview(view, at: insertIndex)
            setNeedsLayout()
            layoutIfNeeded()
        }
    }
}