【问题标题】:Getting subview location after superview rotation超级视图旋转后获取子视图位置
【发布时间】:2012-01-05 00:35:05
【问题描述】:

我有一个 UIView,它有几个响应触摸的子视图。如果我使用如下代码旋转超级视图的 layer

[CATransaction begin];
[CATransaction setDisableActions:true];
view.layer.transform = CATransform3DRotate(view.layer.transform, angle, 0, 0, 1);
[CATransaction commit];

...那么在响应触摸事件时我似乎无法找到子视图的正确位置...有什么想法吗?

【问题讨论】:

  • 使用 NSLog(@"%@", subview.view);定位问题
  • 似乎子视图认为它们仍然在同一个地方。我会继续努力...
  • 会不会是layer的transform属性和UIView的不一样?
  • 部分问题似乎是我在子视图中使用贝塞尔曲线进行命中检测。是否需要更新贝塞尔曲线以进行转换...我以这种方式尝试了一些代码,因为UIBezierPath 有一个applyTransform 方法,但它对我现在做的方式没有帮助...

标签: ios uiview rotation transform


【解决方案1】:

我找到了,我想做得很好。我需要在 UIViews 之间转换点以进行贝塞尔命中测试:

-(BOOL)containsPoint:(CGPoint)point
{
    point = [self.superview.superview convertPoint:point toView:self];
    return [self.slicePath containsPoint:point];
}

【讨论】:

    猜你喜欢
    • 2012-11-28
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多