UIView是UIScrollview的子级,但是当我放大或缩小UIView时,相对于滚动视图中的图像,UIView不会停留在正确的位置



滚动视图显示平面布置图,UIView是一个小绿点,显示用户在平面布置图上的位置。所以我需要能够放大,并使绿点保持在平面图上的同一位置。当我平移时,绿点会正确移动,但当我缩放时,它会远离它应该在的位置。

这是我的故事板截图。绿色小正方形是Scrollview的子视图,显示用户的位置。我用程序移动它,但这并不是问题的根源。https://i.stack.imgur.com/PvD8I.png

以下是将tilemap放入滚动视图的代码:

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进行放大时,你会提供一个可以放大的视图。这个视图及其相应的子视图都会被放大。我看到你的绿点在故事板中,是scrollView内容中的直接子视图。这是不正确的。你的绿点需要是你自己的containerView的子视图,其中包含UIImageView和你的点,或者是你的UIImageView(有时在故事板中很糟糕,你会想在代码中添加它)的子视图。需要注意的是,UIImageViews内部有自己的比例因子,而iOS的比例因子是这样的。因此,如果您试图在UIImageView中动态标记任何内容,请记住这一点。

最新更新