簡體   English   中英

如何在Swift中避免UITableViewController的UIImageView中的圖像大小更改

[英]How to avoid image size changes in UIImageView of UITableViewController in Swift

我正在使用UITableViewController來顯示撲克牌行。 我已將“模式”設置為“ Aspect Fit”,並檢查了情節提要中“剪輯子視圖”中每一行單元格,其ContentView父級以及包含ContentView的單元格中的ImageView。

最初顯示表格時,一切看起來都與預期的一樣,但是,當我滑動瀏覽表格時,滾動到視圖中的一些(不是全部)新行的圖像縮放到錯誤的大小,如圖所示。

某些行中的圖像最終比預期的要小

看來,如果我快速拖動,則會得到更多大小錯誤的行。 如果我緩慢拖動,則所有新行都將適當縮放。 當我使用其他仿真器時,不正確的縮放比例會使某些圖像太大而不是太小,因此整行卡都無法容納在顯示器中。

有些行的圖像太大而無法容納

在代碼中,我設置了contentMode和clipToBounds,但它們似乎沒有幫助:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("LineCell", forIndexPath: indexPath)

    let index = indexPath.row % 4
    let imagename = "cards\(index)"
    let im = UIImage(named: imagename)

    cell.contentMode = UIViewContentMode.ScaleAspectFit
    cell.clipsToBounds = true
    cell.contentView.contentMode = UIViewContentMode.ScaleAspectFit
    cell.contentView.clipsToBounds = true
    cell.imageView?.contentMode = UIViewContentMode.ScaleAspectFit
    cell.imageView?.clipsToBounds = true
    cell.imageView?.image = im

    return cell
}

我錯過了明顯的事情嗎? 謝謝!

我最終以編程方式解決了這個問題。

    let cellImage : UIImageView = UIImageView(frame: CGRectMake(0, 0, cell.bounds.size.width, cell.bounds.size.height))
    cellImage.contentMode = UIViewContentMode.ScaleAspectFit
    cellImage.clipsToBounds = true
    cellImage.image = im
    cell.addSubview(cellImage)

我仍然想找到一種通過Storyboard進行操作的方法,我記得該方法以前一直以簡單的方式工作...早在Apple推出各種形狀和尺寸的設備之前,它們就需要提供越來越復雜的方法在半自動的,基於約束的系統中容納所有大小,即使是最簡單的任務也需要大量的開銷。 但是,現在就可以了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM