我在Swift中使用了比例仿射變換,並且注意到CGAffineTransformMakeScale
在所有iOS版本上都不起作用。爲了演示這些差異,我創建了一個新的Xcode 7項目,在運行iOS7設備,iOS8模擬器和iOS9模擬器的Xcode Storyboard上設置了三個測試框。Swift中的iOS7和iOS8/iOS9上的比例仿射變換縮放比例不同
盒A - 沒有施加約束和被定位在故事板
盒乙中心頂部 - 具有的高度和寬度以及中心的水平和垂直中心對齊約束集。
方框C-具有高度和寬度以及底部空間和中心水平對準約束。
然後使用下面的代碼將盒子縮放到0.5。
注意:粉色區域不是盒子或容器,而是用於突出顯示仿射變換髮生後藍色框的位置。
結果:
iOS7有problems-而所有箱子的一半大小,兩個箱子,A和C,不到位保持居中。
iOS8/iOS9按預期工作 - 無論是否應用約束,所有盒子都將其尺寸減半並保持居中。
問題:
是什麼原因造成這個問題,怎麼能夠最佳矯正和解決,使所有iOS7/8/9版本相同的工作嗎?
CGAffineTransformMakeScale
上iOS7 - 沒有規模如預期:-(
CGAffineTransformMakeScale
iOS8上/ iOS9 - 秤預期:-)
代碼:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var ButtonA: UIButton!
@IBOutlet weak var ButtonB: UIButton!
@IBOutlet weak var ButtonC: UIButton!
@IBAction func ButtonScale(sender: AnyObject) {
self.ButtonA.transform = CGAffineTransformMakeScale(0.5, 0.5)
self.ButtonB.transform = CGAffineTransformMakeScale(0.5, 0.5)
self.ButtonC.transform = CGAffineTransformMakeScale(0.5, 0.5)
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Thanks @Mats您能否澄清一下,「轉型的不同方面的價值」究竟是什麼意思? – user4806509