滚动视图显示了一个平面图,UIView是一个绿色的小点,显示了用户在平面图上的位置。因此,我需要能够放大并让绿点停留在平面图上的同一位置。平移时,绿点会正确移动,但是在缩放时,绿点会偏离应有的位置。

这是我的情节提要的屏幕截图。绿色小方块是Scrollview的子视图,并显示用户的位置。我以编程方式来回移动它,但这不会引起问题。 http://i.imgur.com/TTRMXNS.png

这是将tilemap放入scrollview的代码:

CCDirector* director = (CCDirector *)[self childViewControllers][0];
director.view.frame = CGRectMake(0, 0, floorplanWidth, floorplanHeight);
CGSize sizeOfScene = CGSizeMake(floorplanWidth, floorplanHeight);
float minimumScale = 1;//This is the minimum scale, set it to whatever you want. 1.0 = default
_sceneScrollView.maximumZoomScale = 4.0;
_sceneScrollView.minimumZoomScale = minimumScale;
_sceneScrollView.zoomScale = .1;
[_sceneScrollView setContentMode:UIViewContentModeScaleAspectFit];
[_sceneScrollView sizeToFit];
[_sceneScrollView setContentSize:sizeOfScene];
[_sceneScrollView addSubview:[director view]];

最佳答案

我上面看到的内容实际上有很多错误,使我相信您可能应该查找有关iOS和滚动视图的更多信息。首先,scrollView的contentSize可以通过自动布局或通过设置contentSize的代码来固有地确定。在这种情况下,您的contentSize将通过设置图像来设置。要注意的第二件事是,当您使用scrollView进行放大时,会提供一个放大视图。该视图及其相应的子视图将被放大。我看到您的绿点在情节提要中,并且是滚动视图的contentView中的直接子视图,这是不正确的。您的绿色圆点需要是您自己的包含UIImageView和其中的圆点的containerView的子视图,或者是UIImageView的子视图(有时在情节提要中有点怪,您将需要在代码中添加它) )。需要注意的是,UIImageViews内部有自己的比例因子,而iOS的比例因子则是。因此,如果您尝试在UIImageView中动态标记任何内容,请记住这一点。

关于ios - UIView是UIScrollview的子级,但是当我放大或缩小UIView时,它不会相对于scrollview中的图像停留在正确的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26080527/

10-14 20:51