Uiview iOS的滑块视图

Uiview iOS的滑块视图,uiview,uibutton,uilabel,xib,uiviewanimation,Uiview,Uibutton,Uilabel,Xib,Uiviewanimation,有人能帮我解决这个问题吗 *有一个按钮,当点击时,滑动打开一个UIView,点击的按钮仍然在其左侧 *再次点击此按钮时,UIView会向后滑动。我希望窗口1为view1,窗口2为view2。用视图中需要的内容填充每个视图。如果希望两个视图中都有相同的按钮,请在具有相同文本的每个视图中放置一个按钮。对于用户来说,它是相同的按钮。将视图1上的按钮按到视图2。视图2将使用您告诉它的任何内容初始化。按下视图2中的按钮将弹出视图并将其返回到视图1 我希望这有帮助。如果您需要更具体的帮助,请提供更多信息,我

有人能帮我解决这个问题吗

*有一个按钮,当点击时,滑动打开一个UIView,点击的按钮仍然在其左侧


*再次点击此按钮时,UIView会向后滑动。

我希望窗口1为view1,窗口2为view2。用视图中需要的内容填充每个视图。如果希望两个视图中都有相同的按钮,请在具有相同文本的每个视图中放置一个按钮。对于用户来说,它是相同的按钮。将视图1上的按钮按到视图2。视图2将使用您告诉它的任何内容初始化。按下视图2中的按钮将弹出视图并将其返回到视图1


我希望这有帮助。如果您需要更具体的帮助,请提供更多信息,我将能够进一步帮助您

你所描述的很简单。让我们将从右侧滑入的视图称为抽屉(“抽屉视图”)。将抽屉视图设置为视图控制器主视图的子视图

使“抽屉”视图成为容器视图。把你想要的东西都放进去。(文本视图、按钮等)也将按钮放在此视图中。将该按钮连接到视图控制器中的操作“slideDrawer”

然后确保“剪辑子视图”为false,并使用左箭头键将按钮从抽屉视图的左边缘移开。在IB中,它将消失,但不要担心。IB不像您正在运行的程序那样接受“剪辑子视图”标志

创建抽屉视图的出口,并将其链接到代码

一旦你的抽屉视图看起来正是你想要的,注意它是“尺寸检查器”中的x坐标。我们将该值称为kVisibleX。然后向右拖动该视图,直到它刚好离开屏幕。按钮在IB中不可见,但在运行时仅在窗口边缘可见。(如您在第一张图片中所示)

注意屏幕外抽屉视图的x坐标。让我们将该值称为kOffscreenX

将布尔实例变量“drawerIsShowing”添加到视图控制器

现在编写一个iAction方法slideDrawer:

- (IBAction) slideDrawer: (id) sender;
在该方法中,检查抽屉显示,查看抽屉当前是否可见。如果是,请将其滑出屏幕。如果不是,请在屏幕上滑动它

- (IBAction) slideDrawer: (id) sender;
{
  CGFloat newX;
  if (drawerIsShowing)
    newX = kOffscreenX;
  else
    newX = kVisibleX;
  [UIView animateWithDuration: .25
  animations: 
  ^{
    CGRect drawerFrame = drawerView.frame;
    drawerFrame.origin.x = newX;
    drawerView.frame = drawerFrame;
  }
drawerIsShowing = !drawerIsShowing;
}

声明BOOL以检查视图是否隐藏

In.h

BOOL _isContentVisible;
In.m

-(IBAction)showHideContentView:(id)sender
{
    //BOOL isContentVisible= CGRectIntersectsRect(self.view.bounds, _sideContentScrollView.frame);

    [UIView animateWithDuration:1.0f
                          delay:0
                        options:UIViewAnimationOptionBeginFromCurrentState
                     animations:^{
                         //hide if visible else show
                         if (_isContentVisible) { // Hide
                             _isContentVisible = NO;
                             [_sideContentView setFrame:CGRectMake(-320, 0, 360, 748)];// 40 is assumed to button size
                         }
                         else { // Show
                             _isContentVisible = YES;
                             [_sideContentView setFrame:CGRectMake(0, 0, 360, 748)];
                         }
                     }
                     completion:^(BOOL finished) {
                         if (finished) {

                         }
                     }];
}

sunrize920,我希望视图在同一窗口(RootView)中打开和关闭。因此,如果您删除了过渡动画,这将是一个相同的视图,使用的代码类似于[self-presentModalViewController:vc animated:NO];因此,基本上使两个视图相同,除了向view2添加任何其他内容。如果在过渡中没有动画,它会使事情看起来像是这样。我就是这么做的……但是如果你坚持让uiview出现在同一个窗口中,那就完全是另一回事了。谢谢你的sunrize,但我相信在同一个视图中也可以做到