如何在Swift的UIAlertView中调整附件视图的大小

时间:2015-12-28 10:49:01

标签: ios swift uialertview

我正在尝试在警报视图中显示图片,并使用以下代码:

let alertView = UIAlertView(title: "Alert", message: "Alert + Image", delegate: nil, cancelButtonTitle: "OK")
let imvImage = UIImageView(frame: CGRect(x: 10, y: 10, width: 100, height: 100))
imvImage.contentMode = UIViewContentMode.ScaleAspectFit
imvImage.image = objModelClass.creatorImage

//   alertView.frame = CGRect(x: 0, y: 0, width: 150, height: 150)
alertView.setValue(imvImage, forKey: "accessoryView")

alertView.show()

问题是即使图像尺寸正确,也不是像enter desciption image

这样的警报视图

2 个答案:

答案 0 :(得分:1)

  

旁注:UIAlertView已弃用。 UIAlertController是管理警报的当前方式。

所以这很有意思。无需在代码中指定图像大小。图像按原样表示,即图像的真实大小。

在测试时,UIAlertView似乎会根据设备的宽度和高度与UIViewContentMode一起计算图像显示区域的大小。这意味着在不同尺寸的设备上结果可能不同。由于UIAlertView的宽度为540像素,因此最佳解决方案是使图像的像素为540像素×304像素(16:9)或更低。这可确保iPhone上的警报大小与iPad上的警报大小相同。宽度大于540像素的图像以意想不到的方式出现。

在尝试向UIAlertView添加图片的过程中,所有黑客都乱窜,此方法实际上尊重UIAlertView的标题和消息区域,并允许accessibilityLabel和{{1}功能。它也不会禁止accessibilityHint按钮。

以下适用于iOS 8,9,10和11 beta的设备和模拟器。 (UIAlertView也适用于iOS 7,但未显示的图像除外。)

只需确保准确指向正确的图像名称,否则会出现空白区域。

<强>代码

UIAlertView

图片

let alertView = UIAlertView(title: "Alert title", message: "Alert message.", delegate: nil, cancelButtonTitle: "OK") let imageView = UIImageView() imageView.contentMode = UIViewContentMode.scaleAspectFill imageView.image = UIImage(named: "Image") imageView.isAccessibilityElement = true imageView.accessibilityLabel = "Image label" imageView.accessibilityHint = "Image hint." alertView.setValue(imageView, forKey: "accessoryView") alertView.show() ,540像素x 304像素图片。

enter image description here

答案 1 :(得分:0)

附件中的

图像视图大小取决于图像的真实像素,因此降低了您正在使用的图像的分辨率