ImageView,标签具有不同大小图像的动态位置



我正试图在iOS 9 Swift应用程序中创建一个简单的图库图像详细视图。

我想要上面的图片和下面的标签(用于图片说明)。然而,所有的图像都是不同的形状和大小。

我对图像视图使用Aspect Fit,这给横向图像带来了问题。

图像视图不会调整大小以调整图像,因此它的上方和下方都会出现空白,这会在我的图像和标题之间产生很大的间隙。

在下面的示例中,黄色是图像视图,蓝色是调整纵横比大小的图像本身,粉色是标题标签。

示例图

有什么解决方案可以让图像视图与图像相匹配,但相应地剪裁图像视图以移除未使用的空间?我试着在故事板中勾选"剪辑子视图",但没有成功。

限制

我认为关键是在imageview上设置纵横比约束。

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

您能展示您的约束配置吗?我认为如果你让高度自由,它将适合你放在上面的图像。

最新更新