答案 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视图具有按比例约束的视图。这样,标志的部分将始终相同。
否则,如果要快速执行操作,可以将标签的开头与单元格视图冲突,而不要与标志冲突。这有点脏,但应该可以使用。