带有标签的 ImageView 对于不同大小的图像具有动态位置
ImageView with label that has a dynamic position for different sized images
我正在尝试在我的 iOS 9 Swift 应用程序中创建一个简单的图库图像详细信息视图。
我想要顶部的图像和下面的标签(用于图像标题)。然而,所有的图像都是不同的形状和大小。
我正在为图像视图使用 Aspect Fit,这对横向图像造成了问题。
图像视图不会调整图像大小以调整图像,因此您最终会在图像上方和下方留下空白 space,这会在我的图像和标题之间造成很大差距。
在下面的示例中,黄色是图像视图,蓝色是具有宽高比调整大小的图像本身,粉红色是标题标签。
是否有任何解决方案可以使图像视图适合图像的纵横比,但相应地裁剪图像视图以删除未使用的 space?我尝试在故事板中勾选 "Clip Subviews" 无济于事。
你能展示一下你的约束配置吗?我想如果你让高度自由,它会适合你放在上面的图像。
我认为关键是在图像视图上设置宽高比约束。
class GalleryViewController: UIViewController {
var image: UIImage!
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var captionLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let aspectRatio = image.size.width / image.size.height
imageView.addConstraint(NSLayoutConstraint(item: imageView, attribute: .Width, relatedBy: .Equal, toItem: imageView, attribute: .Height, multiplier: aspectRatio, constant: 0.0))
imageView.image = image
captionLabel.text = (aspectRatio < 1.0) ? "Portrait" : "Landscape"
}
@IBAction func viewWasTapped(sender: UITapGestureRecognizer) {
presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
}
}
看看我的示例项目:
https://www.dropbox.com/sh/oa8g96sknqqq97p/AADvEFpK2L9FbT-gBt5W49pQa?dl=0
我正在尝试在我的 iOS 9 Swift 应用程序中创建一个简单的图库图像详细信息视图。
我想要顶部的图像和下面的标签(用于图像标题)。然而,所有的图像都是不同的形状和大小。
我正在为图像视图使用 Aspect Fit,这对横向图像造成了问题。
图像视图不会调整图像大小以调整图像,因此您最终会在图像上方和下方留下空白 space,这会在我的图像和标题之间造成很大差距。
在下面的示例中,黄色是图像视图,蓝色是具有宽高比调整大小的图像本身,粉红色是标题标签。
是否有任何解决方案可以使图像视图适合图像的纵横比,但相应地裁剪图像视图以删除未使用的 space?我尝试在故事板中勾选 "Clip Subviews" 无济于事。
你能展示一下你的约束配置吗?我想如果你让高度自由,它会适合你放在上面的图像。
我认为关键是在图像视图上设置宽高比约束。
class GalleryViewController: UIViewController {
var image: UIImage!
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var captionLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let aspectRatio = image.size.width / image.size.height
imageView.addConstraint(NSLayoutConstraint(item: imageView, attribute: .Width, relatedBy: .Equal, toItem: imageView, attribute: .Height, multiplier: aspectRatio, constant: 0.0))
imageView.image = image
captionLabel.text = (aspectRatio < 1.0) ? "Portrait" : "Landscape"
}
@IBAction func viewWasTapped(sender: UITapGestureRecognizer) {
presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
}
}
看看我的示例项目: https://www.dropbox.com/sh/oa8g96sknqqq97p/AADvEFpK2L9FbT-gBt5W49pQa?dl=0