在UITableViewCell中更改UIImageView的大小

时间:2018-11-21 13:07:35

标签: ios swift

我是Swift和Xcode的新手。

是否有任何干净的方法来更改UIImageView内的UITableViewCell大小?

这是我的TableView,我想正确对齐左标签enter image description here

3 个答案:

答案 0 :(得分:1)

替换

cell.imageView!.image = image

cell.imageView?.image = image.scaleImage(toSize: CGSize(width: 40, height: 40))

将此UIImageView扩展名添加到项目中。

extension UIImage {
    func scaleImage(toSize newSize: CGSize) -> UIImage? {
        var newImage: UIImage?
        let newRect = CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height).integral
        UIGraphicsBeginImageContextWithOptions(newSize, false, 0)
        if let context = UIGraphicsGetCurrentContext(), let cgImage = self.cgImage {
            context.interpolationQuality = .high
            let flipVertical = CGAffineTransform(a: 1, b: 0, c: 0, d: -1, tx: 0, ty: newSize.height)
            context.concatenate(flipVertical)
            context.draw(cgImage, in: newRect)
            if let img = context.makeImage() {
                newImage = UIImage(cgImage: img)
            }
            UIGraphicsEndImageContext()
        }
        return newImage
    }
}

原因,原因是代码中的错误是UITableViewCell根据其中的图像大小为UIImageView分配了各种大小。除了已将图像调整为特定大小,使其适合UITableViewCell中的imageView内容。

注意: 请不要发布代码的屏幕截图,因为它对其他人从问题中复制代码无济于事,并且也会吸引-ve投票。但是,您可以发布XIB,情节提要和模拟错误的屏幕截图。

答案 1 :(得分:0)

固定UIImageView的宽度并将其contentMode设置为.scaleAspectFit

myImageView.safeAreaLayoutGuide.widthAnchor.constraint(equalToConstant: 50).isActive = true

myImageView.contentMode = .scaleAspectFit
myImageView.clipsToBounds = true

但是,如果您使用情节提要,则可以在其中自行设置这些属性。

答案 2 :(得分:0)

您可以在单元xib中使用堆栈视图或对relavite视图具有按比例约束的视图。这样,标志的部分将始终相同。

否则,如果要快速执行操作,可以将标签的开头与单元格视图冲突,而不要与标志冲突。这有点脏,但应该可以使用。