iOSiOS开发iOS Swift && Objective-C

关于UIView中的坐标转换

2015-10-29  本文已影响8950人  Nedoloroso
  CGRectContainsRect(<#CGRect rect1#>, <#CGRect rect2#>)
  CGRectContainsPoint(<#CGRect rect#>, <#CGPoint point#>)
  CGRectIntersectsRect(<#CGRect rect1#>, <#CGRect rect2#>)
  - (CGPoint)convertPoint:(CGPoint)point toView:(nullable UIView *)view;
  - (CGPoint)convertPoint:(CGPoint)point fromView:(nullable UIView *)view;
  // 后面就具体使用下面的代码举例,下面的会了,上面的自然也就会了
  - (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view;
  - (CGRect)convertRect:(CGRect)rect fromView:(nullable UIView *)view;

fromView

  CGRect newRect = [self.view convertRect:self.blueView.frame fromView:self.redView];

toView

  CGRect newRect = [self.blueView convertRect:CGRectMake(50, 50, 100, 100) toView:self.greenView];
  CGRect newRect = [self.blueView convertRect:CGRectMake(50, 50, 100, 100) toView:nil];
  CGRect newRect = [self.blueView convertRect:self.blueView.bounds toView:nil];
  CGRect newRect = [self.redView convertRect:self.blueView.frame toView:nil];
* 这样写也表明了frame和bounds的区别:frame表示的是在父控件中的位置和大小,bounds表示的是以自身为坐标原点的位置和大小。
* 使用fromView可写成
  CGRect newRect = [self.view.window convertRect:self.blueView.bounds fromView:self.blueView];
上一篇 下一篇

猜你喜欢

热点阅读