如何使用swift在ios中获得方形裁剪照片缩略图

时间:2016-05-09 14:49:57

标签: ios swift thumbnails photo

我想为我的收藏视图单元格获取照片缩略图,这就是我做到的:

imageManager.requestImageForAsset(asset as! PHAsset, targetSize:CGSizeMake(80, 80), contentMode: .AspectFit, options: nil, resultHandler: {(result, info)->Void in
        cell.setThumbnail(result!)
    }   
})

这将获得一个拉伸的缩略图,我想要一个方形裁剪的缩略图,保持照片的原始比例,如iPhone的照片应用程序。

有什么想法吗?请快速回复,因为我是ios编程的新手,我从swift开始,谢谢。

1 个答案:

答案 0 :(得分:1)

如果您正在使用Interface Builder,可以在UIImageView上设置属性,请查看以下两个属性:

enter image description here

视图模式将影响它是否看起来拉伸或是否适合。但有时候,即使它在技术上合适,如果你的图像太大,它仍可能会溢出单元格的界限。在这种情况下,您可以启用“剪辑子视图”,以确保图像不会显示在图像视图rect的边界之外。

如果您不使用Interface Builder,则可以在代码中的单元格上设置这两个属性,即:

// This is assuming your UIImageView inside your cell is
// called 'thumbnail'. You could put this code inside of your
// .setThumbnail() function instead--though it's not clear
// what all that is doing from you code snippet.
cell.thumbnail.clipsToBounds = true
cell.thumbnail.contentMode = .ScaleAspectFill

您可以选择的各种内容模式在UIKit中定义如下:

public enum UIViewContentMode : Int {

    case ScaleToFill
    case ScaleAspectFit // contents scaled to fit with fixed aspect. remainder is transparent
    case ScaleAspectFill // contents scaled to fill with fixed aspect. some portion of content may be clipped.
    case Redraw // redraw on bounds change (calls -setNeedsDisplay)
    case Center // contents remain same size. positioned adjusted.
    case Top
    case Bottom
    case Left
    case Right
    case TopLeft
    case TopRight
    case BottomLeft
    case BottomRight
}