0

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

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

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

-(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 中调用它似乎并没有像我期望的那样工作。理想情况下,当视图加载时,我不想看到提示视图(图像视图),直到它位于正确的位置?

4

2 回答 2

0

为什么不这样做:

 Hide the image
 Move the image
 Unhide the image

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

杰夫

于 2013-10-24T17:56:20.283 回答
0

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

-(void)viewDidLayoutSubviews

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

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

解决方法是检查该点是否不为 0,0,如果它保持隐藏。在我的示例中,它永远不会是 0,0 - 幸运的是。

于 2013-10-24T21:15:15.310 回答