#swift
#swift
Вопрос:
У меня есть UIImageView
, и я хотел бы выровнять его по правому краю. Но я пытаюсь начать с простого перемещения:
let imageView = UIImageView(image: UIImage(named: "icon_delete"))
var rect = imageView.frame
rect.origin.x = 100
imageView.frame = rect
photosViewController.overlayView.bottomStackContainer.addSubview(imageView)
Но, похоже, это не работает, и изображение было установлено на левую сторону:
Что не так?
Комментарии:
1. Является
bottomStackContainer
UIStackView
?2. @RicoCrescenzio нет, это
AXStackableViewContainer
, то естьUIView
этоAXPhotoViewer
библиотека
Ответ №1:
Попробуйте использовать привязки автозапуска
imageView.leadingAnchor.constraint(equalTo: bottomStackContainer.leadingAnchor, constant: 100).isActive = true
Является ли bottomStackContainer StackView? Затем вы должны добавить упорядоченные подвиды с помощью методаaddArrangedSubview().
Комментарии:
1. нет, это
AXStackableViewContainer
, то естьUIView
этоAXPhotoViewer
библиотека2. попробуйте использовать привязки вместо манипулирования фреймом, автоматическое описание переопределяет ручные изменения фрейма
3. Да, потому что эта библиотека также использует некоторые ограничения. Вы можете добавить два изображения, свой значок и прозрачное изображение шириной 100 пикселей. Или отредактируйте свой значок, добавьте прозрачную часть на 100 пикселей слева.
Ответ №2:
Попробуйте перерисовать представление с помощью setNeedsDisplay()
метода.
Ссылка: https://www.hackingwithswift.com/example-code/uikit/how-to-force-a-uiview-to-redraw-setneedsdisplay
Ответ №3:
Во-первых, предполагая, что:
photosViewController.overlayView.bottomStackContainer
это представление (которое я называю containingView в моем фрагменте), попробуйте что-то вроде:
let imageView = UIImageView(image: UIImage(named: "icon_delete"))
containingView.addSubview(imageView)
imageView.translatesAutoresizingMaskIntoConstraints = false
containingView.translatesAutoresizingMaskIntoConstraints = false
imageView.trailingAnchor.constraint(equalTo: containingView.trailingAnchor).isActive = true
Если вам нужно переместить изображение влево от заднего края, вы можете:
imageView.trailingAnchor.constraint(equalTo: containingView.trailingAnchor, constant: -10).isActive = true
или как бы далеко вам ни нужно было его переместить.
Примечание: Вы получите ошибку времени выполнения, если забудете установить маске автоматического изменения размера значение false в обоих представлениях.