在正确的时间移动ImageView中心点

时间:2013-10-24 17:28:25

标签: ios ios6 uiview uiimageview

我有一个正在更新的UIImageView的中心点。

目前问题是我看到图像视图移动了。我正在寻找的是在隐藏视图时移动imageview,然后在更新中心点后再次显示它。

我创建了一个执行中心点更新的方法:

-(void)updateCenterPoint {
    float newhintX = (self.originalImageCenterPoint.x * self.scaleDownOriginalImageRatio) + self.insideImageFrame.frame.origin.x;
    float newhintY = (self.originalImageCenterPoint.y * self.scaleDownOriginalImageRatio) + self.insideImageFrame.frame.origin.y;
    if (self.hintView.hidden == NO) {
        self.hintView.hidden = YES;
        self.hintView.center = CGPointMake(newhintX, newhintY);
    } else {
        self.hintView.center = CGPointMake(newhintX, newhintY);
    }

    if (self.hintView.hidden) {
        self.hintView.hidden = NO;
    }
}

在viewDidLoad中调用此方法似乎并不像我期望的那样。理想情况下,当视图加载时,我不希望看到hintView(图像视图),直到它处于正确的位置?

2 个答案:

答案 0 :(得分:0)

为什么不做这样的事情:

 Hide the image
 Move the image
 Unhide the image

而不是询问它是否被隐藏等明确地隐藏它,移动它,然后取消隐藏它。

杰夫

答案 1 :(得分:0)

问题是我正在从方法更新中心点:

-(void)viewDidLayoutSubviews

这在某些时候被称为太早了。所以即使它正在更新,中心点仍然是0,0。

这意味着在中心点发生变化之前视图已被取消隐藏/显示,因此当再次调用该方法时,更新发生在中心点。

决议是检查该点是否为0,如果隐藏它。在我的例子中它永远不会是0,0 - 幸运的是。