2017-09-21 47 views
0

我已經UITableView的,其中是在每個單元上具有相同的意見UIStackView(不同的內容只)(該的tableView的細胞如下所示)的iOS - 佈局的UIImageView的所述scaleaspectfit的UIImageView的圖像上的子視圖

UITableView cell

該視圖由上面的UIImageView和UILabel組成。由於保持比例,UIImageView的內容設置爲.scaleAspectFit。我有一個向imageView添加新圖像層(子視圖)的問題,該圖層必須與當前圖像完美重疊,但我無法通過自動佈局正確放置圖像,因爲我知道只有UIImageView的錨點,而不是圖像的錨點(它沒有' t存在)。

PS:我試過使用imageview.image.size.width來設置寬度和高度,但它也沒用。

當前使用自動佈局添加子視圖的代碼:

func addStripe(){ 
     let stripeLayer = UIImageView(image: #imageLiteral(resourceName: "book_new")) 
     imageView.addSubview(stripeLayer) 

     stripeLayer.contentMode = .scaleToFill 
     stripeLayer.translatesAutoresizingMaskIntoConstraints = false 

     stripeLayer.topAnchor.constraint(equalTo: imageView.topAnchor).isActive = true 
     stripeLayer.leadingAnchor.constraint(equalTo: imageView.centerXAnchor).isActive = true 
     stripeLayer.trailingAnchor.constraint(equalTo: imageView.trailingAnchor).isActive = true 

Aaaand有addStripe功能(錯誤的)

And there is a result

感謝大家對你的時間的結果!

+1

請看看[這裏](https://stackoverflow.com/questions/6278876/how-to-know-the-image-size-after-applying-aspect -fit換的圖像功能於一個-的UIImage/43114960#43114960)。它會告訴你如何獲得圖像的最終尺寸。然後它應該很容易玩你正確的條紋。 –

+0

@ReinhardMänner它完美的工作!請將您的評論添加爲答案,因爲將其標記爲解決方案。非常感謝你。 – prone666

回答

0

@ ReinhardManner的評論讓我和它的作品。這種單線解決我的問題

let sizeInView = AVMakeRect(aspectRatio: imgViewFake.image.size, insideRect: imgViewFake.bounds).size 
1

我認爲你應該設置你的stripeLayer的框架等於imageView。你可以用這樣的UIImageView init方法做到這一點:

let stripeLayer = UIImageView(frame: imageView.frame) 
stripeLayer.image = #imageLiteral(resourceName: "book_new") 
imageView.addSubview(stripeLayer.image) 

我希望它幫你

+0

這是錯誤的,因爲UIImage是不是一個視圖,這意味着我不能添加圖像作爲子視圖:) – prone666

+0

@ prone666,但我用UIImageView,而不是UIImage –

+0

是的,當然,但在代碼段的第3行,重新添加'stripeLayer.image' – prone666