Если я понял, чего вы пытаетесь достичь, почему бы не иметь обертывающий 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.
}
}
То же самое можно легко сделать с помощью Раскадровки. Если вы застрянете, я опубликую то же самое для раскадровки.