Swift Как разместить UIStackView в специальном c углу ImageView - PullRequest
0 голосов
/ 04 августа 2020

Итак, в основном у меня есть ImageView и HorizontalStackView ( тот, что обведен красным ). Я пытаюсь наложить макет просмотра стека в верхнем правом углу изображения после того, как пользователь нажал кнопку. Излишне говорить, что у меня нет контроля над изображением, загружаемым в ImageView, поскольку оно извлекается из inte rnet. Я читал на Apple do c, что .contentMode получит результат, который я ищу. Таким образом, это мой пример кода

 case .UpRight:
        repostLayout.contentMode = .topRight
        imageView.addSubview(repostLayout)

Как и следовало ожидать, при запуске приложения изменений не происходит. Может ли кто-нибудь указать мне в правильном направлении, как я смогу это сделать?

Заранее спасибо ...

1 Ответ

0 голосов
/ 04 августа 2020

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

Так, например:

class MyViewController: UIViewController {
    let wrapperView: UIView = {
        let view = UIView()
        view.backgroundColor = .clear
        return view
    }()
    
    //Your existing stack
    private let stackView: UIStackView = {
        let stack = UIStackView()
        stack.axis = .horizontal
        return stack
    }()
    
    //Your existing imageView
    private let imageView: UIImageView = UIImageView()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        
        //Shouldn't necessarily be in viewDidLoad, but just for example:
        view.addSubview(wrapperView)
        //Set wrapperView's constraints to where the image currently is
        
        imageView.translatesAutoresizingMaskIntoConstraints = false
        stackView.translatesAutoresizingMaskIntoConstraints = false
        
        wrapperView.addSubview(imageView)
        wrapperView.addSubview(stackView)
        imageView
            .topAnchor
            .constraint(equalTo: wrapperView.topAnchor)
            .isActive = true
        imageView
            .bottomAnchor
            .constraint(equalTo: wrapperView.bottomAnchor)
            .isActive = true
        imageView
            .leadingAnchor
            .constraint(equalTo: wrapperView.leadingAnchor)
            .isActive = true
        imageView
            .trailingAnchor
            .constraint(equalTo: wrapperView.trailingAnchor)
            .isActive = true
        
        stackView
            .topAnchor
            .constraint(equalTo: wrapperView.topAnchor)
            .isActive = true
        stackView
            .trailingAnchor
            .constraint(equalTo: wrapperView.trailingAnchor)
            .isActive = true
        
        //Make sure your stack view is not too wide or too tall for the wrapper
        //Either by using constraints or by any other method.
    }
}

То же самое можно легко сделать с помощью Раскадровки. Если вы застрянете, я опубликую то же самое для раскадровки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...