UIScrollView将按钮保持在固定位置

时间:2015-07-22 07:55:32

标签: ios objective-c swift xcode uiscrollview

我正在使用UIScrollView捏缩放图像我正在使用的代码是这样的

CGRect fullScreenRect=[[UIScreen mainScreen] applicationFrame]; //Full Screen
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:fullScreenRect];
scroll.backgroundColor = [UIColor clearColor];
scroll.delegate = self;

scroll.contentSize = _imageView.frame.size;

[scroll addSubview:_imageView];
scroll.minimumZoomScale = 1.0;
scroll.maximumZoomScale = 5.0;
[scroll setZoomScale:scroll.minimumZoomScale];
self.view = scroll;


[scroll addSubview:_screenShotButton];
[scroll addSubview:_resolutionButton];

-(void)aligementTheControlBasedOnOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
  bool ipad = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
   if (ipad) {

      if(UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
      {
           _imageView.frame = CGRectMake(142, 114, 740, 555);

           if ([self.resoultion isEqualToString:@"Default"]) {
                _imageView.frame = CGRectMake(142, 114, 740, 555);
           }
           else if([self.resoultion isEqualToString:@"4:3"])
                _imageView.frame = CGRectMake(142, 114, 740, 555);
           else if([self.resoultion isEqualToString:@"16:9"])
                _imageView.frame = CGRectMake(142, 114, 740, 416);

           self.screenShotButton.frame = CGRectMake(794, 667, 55, 55);

           self.resolutionButton.frame = CGRectMake(857, 667, 55, 55);
      }
      else
      {
           _imageView.frame = CGRectMake(64, 238, 640, 480);

           if ([self.resoultion isEqualToString:@"Default"]) {
                _imageView.frame = CGRectMake(64, 238, 640, 480);
           }
           else if([self.resoultion isEqualToString:@"4:3"])
                _imageView.frame = CGRectMake(64, 238, 640, 480);
           else if([self.resoultion isEqualToString:@"16:9"])
                _imageView.frame = CGRectMake(64, 238, 640, 360);

           self.screenShotButton.frame = CGRectMake(578, 749, 55, 55);

           self.resolutionButton.frame = CGRectMake(649, 749, 55, 55);
      }
 }
}

根据用户选择的分辨率,我正在定位按钮。

一切都对我很好。我面临的问题是_screenShotButton和_resolutionButton在我缩放图像时也在移动。相反,我想让按钮保持静止在屏幕的右下方。

任何人都可以帮助我。

2 个答案:

答案 0 :(得分:4)

您可以将子视图从UIScrollView移动到滚动视图的超级视图,如:

将按钮放置/设置在滚动视图上(不在滚动视图内),如此快照中所示。并且还针对滚动视图的超级视图设置按钮约束(位置)。

enter image description here

这是参考。每个视图相对于彼此的位置层次结构的快照。

enter image description here

答案 1 :(得分:3)

不要将您的按钮添加到滚动视图,而是添加到其父级。

这部分错了:

[scroll addSubview:_screenShotButton];
[scroll addSubview:_resolutionButton];

假设滚动superview(原始问题中没有),请改为:

[scroll.superview addSubview:_screenShotButton];
[scroll.superview addSubview:_resolutionButton];

或者,您可以通过其中一种-addSubView:方法替换-insertSubview::来选择滚动与screenShotButton的顺序。