iOS8 좌표계에 문제가있는 것 같습니다. 나는 이것이 그것이 있어야하는 방식인지 또는 버그인지를 알아 내려고하고있다. 나 한테 버그 같아. 그러나 요소의 프레임 속성에 액세스 할 때 iOS8 대 iOS 7로 실행하면 다른 좌표가 나타납니다. iOS8이 숫자를 두 배로 늘린 것처럼 보이거나 망막 화면에서 실행 중임을 고려하지 않은 것처럼 보입니다. 또한 특정 제약 조건이없는 프레임에만 영향을 미치는 것으로 보입니다. 너비 제약 조건을 추가하면 너비는 정확하지만 자동 계산 된 너비이면 두 배가됩니다.iOS 좌표계가 잘못되었습니다.
누구나 시도 할 수있는 테스트 프로젝트 https://github.com/smitt04/TestCoodinates을 만들었습니다.
스토리 보드와 함께 여기에 붙여 넣습니다.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var button: UIButton!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var version: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
label.text = "Frame is \(button.frame)"
version.text = "iOS: \(UIDevice.currentDevice().systemVersion)"
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
및 결과가
인 아이폰 OS 7
아이폰 OS 8
,어떤 통찰력도 인정 될 것입니다. 감사.
'viewDidLoad'가 너무 이릅니다. 보기의 크기가 아직 제대로 설정되지 않았습니다. – rmaddy
iOS 버전간에 '0.5'픽셀 차이가 생겼지 만 문제가 해결 된 것 같습니다. 하지만,'viewDidLoad'는 뷰가 나타나기 전에 뷰를 초기화 할 수 있고 실제로 한 번만 호출된다는 사실을 알았습니다. 그리고 이것은 좀 이상합니다. 이전 iOS 버전에서는 제대로 동작하지만'iOS 8'에서는 더 이상 작동하지 않습니다. – smitt04
그들은 좌표계를 전환한다고 생각합니다. viewDidLayoutSubviews에서 일부 프레임을 설정했는데 기준 좌표계가 반전 된 것처럼 보이는 경우 [UIScreen mainScreen] .bounds를 사용할 때 – artud2000