为什么iOS坐标系很难理解??只有我?
Why iOS coordinate system is difficult to understand?? only me?
我正在研究iOS' UIView!
而且我发现我无法理解边界是如何工作的。
例如,
请运行此代码...并查看红色框的移动。
红框升起!而白根视图是静态的!
为什么!?为什么红色框会上升! ??请让我知道OTL!
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let childView : UIView = UIView(frame: CGRect(x: 50, y: 50, width: 200, height: 200) )
childView.backgroundColor = UIColor.red
self.view.addSubview(childView)
}
override func viewDidAppear(_ animated: Bool) {
UIView.animate(withDuration: 8, animations: {
// I cannot unnerstand how bounds works!!
self.view.bounds = CGRect(x: 0, y: -300, width:self.view.bounds.width, height: 700)
//I can understand how frame works
self.view.frame = CGRect(x: 200, y: 0, width: self.view.bounds.width, height: self.view.frame.height)
})
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我看了this article,但看不懂
CompositedPosition.x = View.frame.origin.x - Superview.bounds.origin.x;
CompositedPosition.y = View.frame.origin.y - Superview.bounds.origin.y;
这里!这是对的(根据我的测试,这是对的。)但是,我不知道为什么。为什么不 "View.frame.origin.x + Superview.bounds.origin.x" ?
如果我们改变视图边界的原点并且视图在屏幕上移动,"bounds" 和 "frame" 在原点(或位置)的角度有什么区别?除了简单地反向操作之外还有什么区别吗?
基本上,UIView 的边界是矩形,表示为相对于其自身坐标系 (0,0) 的位置 (x,y) 和大小 (width,height)。
UIView 的框架是一个矩形,表示为相对于它所包含的父视图的位置 (x,y) 和大小(宽度,高度)。
请遵循此 link 以获得清晰的示例。 Cocoa: What's the difference between the frame and the bounds?
我正在研究iOS' UIView! 而且我发现我无法理解边界是如何工作的。
例如,
请运行此代码...并查看红色框的移动。 红框升起!而白根视图是静态的!
为什么!?为什么红色框会上升! ??请让我知道OTL!
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let childView : UIView = UIView(frame: CGRect(x: 50, y: 50, width: 200, height: 200) )
childView.backgroundColor = UIColor.red
self.view.addSubview(childView)
}
override func viewDidAppear(_ animated: Bool) {
UIView.animate(withDuration: 8, animations: {
// I cannot unnerstand how bounds works!!
self.view.bounds = CGRect(x: 0, y: -300, width:self.view.bounds.width, height: 700)
//I can understand how frame works
self.view.frame = CGRect(x: 200, y: 0, width: self.view.bounds.width, height: self.view.frame.height)
})
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我看了this article,但看不懂
CompositedPosition.x = View.frame.origin.x - Superview.bounds.origin.x;
CompositedPosition.y = View.frame.origin.y - Superview.bounds.origin.y;
这里!这是对的(根据我的测试,这是对的。)但是,我不知道为什么。为什么不 "View.frame.origin.x + Superview.bounds.origin.x" ?
如果我们改变视图边界的原点并且视图在屏幕上移动,"bounds" 和 "frame" 在原点(或位置)的角度有什么区别?除了简单地反向操作之外还有什么区别吗?
基本上,UIView 的边界是矩形,表示为相对于其自身坐标系 (0,0) 的位置 (x,y) 和大小 (width,height)。
UIView 的框架是一个矩形,表示为相对于它所包含的父视图的位置 (x,y) 和大小(宽度,高度)。
请遵循此 link 以获得清晰的示例。 Cocoa: What's the difference between the frame and the bounds?