UIView高度未正确缩放设备

时间:2016-05-25 19:30:07

标签: ios swift uiview scaling

我正在开发一款应用程序,它使用拾取器旋转基本的颜色条。这些条应该与高度匹配,并且位于背景图像宽度上的特定位置。图像是可缩放的矢量,并设置为Aspect Fit。图像还包括一些空白区域,因此条形图不能简单地设置为与图像完全相同的高度。为了创建条形,我创建了一个简单的矩形UIView并根据需要设置背景颜色。选择器方法如下:

imageSize = AVMakeRectWithAspectRatioInsideRect(myImage.image!.size, myImage.frame)

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView {

    let imageHeight = self.imageSize.height
    let imageWidth = self.imageSize.width

    let barWidth = imageWidth * 0.055

    var frame: CGRect

    switch component {
    case 1: // First component needs to match tan portions height
        let barHeight = imageHeight * 0.85

        frame = CGRect(x: -barWidth/2, y: -barHeight/2, width: barWidth, height: barHeight)
        break
    case 3, 4, 5: // another part of image has different height
        let barHeight = imageHeight * 0.64

        frame = CGRect(x: -barWidth/2, y: -barHeight/2, width: barWidth, height: barHeight)
        break
    default: // return empty views for spacers
        return UIView()
    }


    let stripe = UIView(frame: frame)
    stripe.backgroundColor = getColor(component, row: row)
    return stripe

}

要计算imageHeight我使用了多种方法,都没有成功。我直接使用myImage.image.size.height以及使用AVMakeRectWithAspectRatioInsideRect。图像跨越设备的宽度。以下是图像条子的一些屏幕截图:

on 6S:

6S
6S Band Sizes

on 6S Plus:

6S Plus 在5S:

5S

如您所见,条形图与背景图像的浅棕褐色部分没有正确对齐,此外水平位置也关闭。我曾经以为使用百分比会通过缩放保持正确的对齐,但我想我错了。

有没有人有过这方面的经验,可能会看到我做错了什么?

1 个答案:

答案 0 :(得分:0)

我通过使用宽度的百分比作为我的酒吧的高度来缩放工作。这仅仅是因为图像设置为Aspect Fit并且宽度与屏幕相同。

这是一个丑陋的解决方案,仅对特定的一组应用程序有效。似乎图像尺寸与不同设备相比较或不返回适当尺寸是不可靠的。我还没弄清楚为什么我的原始逻辑不起作用。