Я рассмотрел другие вопросы по поводу этой проблемы, и мой код, похоже, соответствует предоставленным решениям, поэтому я не знаю, где я ошибаюсь. I ma пытается сбросить положение изображения при загрузке экрана. размер будет зависеть от базового изображения.IOS Cant Reposition UIImageView во время выполнения
Изображение всегда остается там, где оно было размещено в построителе интерфейса. На изображении нет ограничений.
Имеет ли значение, где я называю это From? я попробовал viewDidLoad()
, viewWillLoad()
И viewDidAppear()
код
@IBOutlet weak var cameraPreview: UIView!
@IBOutlet weak var glassesOverlay: UIImageView!
print("Before")
print("overlay x: \(glassesOverlay.frame.origin.x)")
print("overlay y: \(glassesOverlay.frame.origin.y)")
print("overlay W: \(glassesOverlay.frame.width)")
print("overlay H: \(glassesOverlay.frame.height)")
let glassesOrigin = CGPointMake((cameraPreview.frame.width/2) - (glassesOverlay.frame.width/2), cameraPreview.frame.height/3)
//let glassesOrigin = CGPointMake(179.0, 179.0)
let glassesWidth = cameraPreview.frame.width/2.0
let glassesSize = CGSizeMake(glassesWidth, glassesWidth/4)
// glassesOverlay.frame.origin = CGPointMake((cameraPreview.frame.width/2) - (glassesOverlay.frame.width/2), cameraPreview.frame.height/3)
// glassesOverlay.frame.size = glassesSize
glassesOverlay.frame = CGRect(origin: glassesOrigin, size: glassesSize)
//cameraPreview.subviews[0].frame = CGRect(origin: glassesOrigin, size: glassesSize)
glassesOverlay.layer.borderColor = UIColor.purpleColor().CGColor
glassesOverlay.layer.borderWidth = 2.0
cameraPreview.layer.borderColor = UIColor.purpleColor().CGColor
cameraPreview.layer.borderWidth = 2.0
print("After")
print("overlay x: \(glassesOverlay.frame.origin.x)")
print("overlay y: \(glassesOverlay.frame.origin.y)")
print("overlay W: \(glassesOverlay.frame.width)")
print("overlay H: \(glassesOverlay.frame.height)")
, как вы можете видеть, я попытался явно устанавливая значения с тем же результатом. Я печатаю положение и размеры до и после, и они печатают измененные значения.
печати Выход
Before
overlay x: 135.0
overlay y: 382.0
overlay W: 320.0
overlay H: 128.0
After
overlay x: 224.0
overlay y: 296.667
overlay W: 384.0
overlay H: 96.0
Но он остается неподвижным.
Можете ли вы добавить вышеуказанный код в viewDidLayoutSubviews()? –
@ Vishnugondlekar Спасибо за ввод, но это не сработало, единственный эффект, который у него был, был вызван код дважды. – Lonergan6275