我正在使用一個選擇器來旋轉通過基本的顏色條的應用程序。這些條應該與高度匹配,並且位於背景圖像寬度的特定位置。該圖像是一個可縮放的矢量,並設置爲Aspect Fit。該圖像還包含一些空白區域,因此不能簡單地將它們設置爲與圖像完全相同的高度。要創建酒吧,我創建了一個簡單的長方形UIView
並根據需要設置背景顏色。拾取器方法如下: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
。圖像跨越設備的寬度。以下是圖像的條子的一些截圖:
上6S:
上6S加:
正如您所看到的,該條不與背景圖像的淡褐色部分正確對齊,而且水平位置也會關閉。我曾認爲使用百分比可以通過縮放來保持適當的對齊,但我想我錯了。
有沒有人有這方面的經驗,可能能夠看到我做錯了什麼?
我不確定你應該使用'let barHeight = imageHeight * 0.85',如果你想要它等於圖像高度。您應該使用大小類以編程方式查看。 –
爲什麼不使用自動佈局?你在哪裏得到0.85的計算? 如果你想這樣做,請'let barHeight = screenHeight * 0.85' –
@RyanCollins我不希望它完全等於圖像高度。圖像有一些我不需要匹配的空白區域。 –