2015-11-19 34 views
2

我想在iOS 9 Swift應用程序中創建一個簡單的圖庫圖像細節視圖。ImageView標籤具有不同大小的圖像的動態位置

我想要在頂部的圖像和下面的標籤(圖像標題)。但是,所有圖像都是不同的形狀和大小。

我正在使用Aspect Fit來創建景觀圖像問題的圖像視圖。

圖像視圖無法調整圖像大小,因此最終會在其上方和下方留下空白,這會在圖像和標題之間產生很大差距。

在下面的例子中,黃色是圖像視圖,藍色是圖像本身,方面適合調整大小,粉紅色是標題標籤。

Example Diagram

用於獲取的ImageView到方面適合圖像,但相應剪輯圖像視圖,以除去未使用的空間的任何解決方案?我試圖在故事板中勾選「Clip Subviews」無濟於事。

Constraints

+0

如此 - 留在你的榜樣 - 要刪除未使用的黃色空間,對不對? –

+0

正確 - 在左邊的例子當然無所謂,但它會影響右側示例中的標籤位置 – user892028

回答

0

我認爲關鍵是在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

+0

根據故事板中的示例調整我的約束後,完美地工作。比你多! – user892028

+0

不客氣☺️ –

0

你能告訴你的約束配置?我想如果你讓高度自由,它將適合你放在它上面的圖像。

+0

http://i.stack.imgur.com/YxQYZ.png 我認爲這很可能是問題。我有真正的問題讓圖像視圖適當地調整自己的尺寸,並在下面有標題標籤。 – user892028

+0

您的約束使imageView高度取決於視圖的高度。您已將標籤附加到視圖的底部,將imageView附加到標籤(以及視圖的頂部),因此imageView無法自動調整其高度以適應其內容。嘗試刪除標籤底部視圖約束,imageView應適合內部圖像,標籤調整到imageView。 – glm4

相關問題