Конечная цель - щелкнуть фотографию с помощью камеры, а затем иметь изображение, а наклейка наложить на нее фотографию, а затем сохранить композицию из трех слоев ,Нужна помощь в позиционировании ярлыка в контексте (Swift 3)
У меня есть большая часть его работы - единственная часть, которую я не могу понять, - это правильно разместить этикетку.
Мне хотелось бы, чтобы размеры метки были чем-то вроде (x: 0, y: 500, ширина: 416, высота: 55), но всякий раз, когда я устанавливал эти координаты, метка становится супер искаженной.
Я также попытался установить их на (0, 0, 416, 553), которые являются полными размерами фотографии & наложения, но это просто позиционирует метку в абсолютном центре.
Вот код, я использую:
func generateImageWithText(text: String) -> UIImage {
let image = UIImage(named: "9thGup-43")!
let imageView = UIImageView(image: image)
imageView.backgroundColor = UIColor.clear
imageView.frame = CGRect(x: 0, y: 0, width: 414, height: 553)
imageView.contentMode = .scaleAspectFit
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 414, height: 553))
label.backgroundColor = UIColor.clear
label.textAlignment = .center
label.textColor = UIColor.white
label.font = UIFont(name: "Japan", size: 45)!
label.text = text
label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.5
let customSize = CGSize(width: 414.0, height: 553.0)
UIGraphicsBeginImageContextWithOptions(customSize, false, 0);
imageView.layer.render(in: UIGraphicsGetCurrentContext()!)
label.layer.render(in: UIGraphicsGetCurrentContext()!)
let imageWithText = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext();
return imageWithText!
}
Кто-нибудь знает, как я могу правильно расположить метку так, чтобы она сидит в нижней части составного изображения, которое я создаю?
При использовании вещи, как «frame.size.height», что означает «кадр»? Это тот кадр, который вы создаете с помощью «frame: CGRect», или это другой объект в представлении? –
Кроме того, похоже, что вы вычисляете ширину и высоту программно. Могли бы вы технически просто ввести туда значения int (т. Е. Координаты на экране)? Я имею в виду - я пробовал это раньше, и мне не повезло ... но просто любопытно, почему это не сработало. –
Я выражаю y-позицию и высоту с точки зрения высоты изображения. если вы всегда жестко кодируете его, тогда вы должны его перекодировать, если изменяется высота изображения. На самом деле вам не нужен весь кадр; высота была бы достаточной. –