首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >anchorPoint如何影响UIView中的中心?

anchorPoint如何影响UIView中的中心?
EN

Stack Overflow用户
提问于 2015-03-07 03:53:15
回答 1查看 293关注 0票数 0

我正在开发一个应用程序,可以让用户使用UIGestureRecognizers调整照片的大小和旋转。我有这个代码,它根据用户应用触摸的位置来调整anchorPoint (让它看起来像是在他们手指实际所在的位置缩放图像):

代码语言:javascript
复制
- (void)adjustAnchorPointForGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
{
    UIView *gestureRecognizerView = gestureRecognizer.view;
    CGPoint locationInView = [gestureRecognizer locationInView:gestureRecognizerView];
    CGPoint locationInSuperview = [gestureRecognizer locationInView:gestureRecognizerView.superview];

    gestureRecognizerView.layer.anchorPoint = CGPointMake(locationInView.x / gestureRecognizerView.bounds.size.width, locationInView.y / gestureRecognizerView.bounds.size.height);
    gestureRecognizerView.center = locationInSuperview;
}

稍后,我只想用下面的代码计算基于中心和边界的原点:

代码语言:javascript
复制
CGRect transformedBounds = CGRectApplyAffineTransform(view.bounds, view.transform);
CGPoint origin = CGPointMake(view.center.x - (transformedBounds.size.width * view.layer.anchorPoint.x), view.center.y - (transformedBounds.size.height * view.layer.anchorPoint.y));

而且结果不正确(我正在与frame值进行比较,讽刺的是,frame值应该是无效的,但实际上它确实具有正确的值)。

所以总而言之,我想知道,我在这里没有考虑到什么?anchorPoint是如何以一种我无法确定的方式影响中心的?

EN

回答 1

Stack Overflow用户

发布于 2015-03-31 22:33:40

我认为问题是你计算的origin并不是一个原点,而是你的transformedBounds矩形原点的一个偏移量。

我还没有完全测试它,但是如果你这样做,你应该会得到正确的框架:

代码语言:javascript
复制
  CGRect transformedBounds =
      CGRectApplyAffineTransform(view.bounds, view.transform);
  CGSize originOffset = CGSizeMake(
      view.center.x - (transformedBounds.size.width * view.layer.anchorPoint.x),
      view.center.y -
          (transformedBounds.size.height * view.layer.anchorPoint.y));

  transformedBounds.origin.x += originOffset.width;
  transformedBounds.origin.y += originOffset.height;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28906569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档