有人可以帮我解决这个问题吗?
*有一个按钮,当点击时,幻灯片打开一个UIView,点击按钮仍然在其左侧。
*再次点按此按钮会使UIView滑回。
答案 0 :(得分:5)
你所描述的很容易。让我们调用从右侧抽屉滑入的视图(“drawerView”)。将抽屉视图设置为视图控制器主视图的子视图。
使“抽屉”视图成为容器视图。把你想要的一切都放在里面。 (您的文本视图,按钮等)也将您的按钮放在此视图中。将该按钮连接到视图控制器中的动作“slideDrawer”。
然后确保“剪辑子视图”为假,并使用向左箭头键将抽屉视图的左边缘移开按钮。在IB中它会消失,但不要担心。 IB不会像你正在运行的程序那样尊重“剪辑子视图”标志。
为抽屉视图创建一个插座,并将其链接到您的代码。
一旦您的抽屉视图看起来完全符合您的要求,请在“尺寸检查器”中注明它的x坐标。我们称该值为 kVisibleX 。然后将该视图向右拖动,直到它刚好在屏幕外。该按钮在IB中不可见,但在运行时仅在窗口边缘可见。 (就像你在第一张图片中展示的那样)
请注意抽屉视图在屏幕外时的x坐标。我们称该值为 kOffscreenX 。
将一个布尔实例变量“drawerIsShowing”添加到视图控制器。
现在编写一个IBAction方法slideDrawer:
- (IBAction) slideDrawer: (id) sender;
在该方法中,检查drawerIsShowing以查看抽屉当前是否可见。如果是,请将其滑出屏幕。如果不是,请在屏幕上滑动。
- (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;
}
答案 1 :(得分:0)
我希望窗口1是view1,窗口2是view2。使用视图中的任何需要填充每个视图。如果要在两个视图中使用相同的按钮,请在每个具有相同文本的视图中放置一个按钮。对于用户来说,它是相同的按钮。让视图1上的按钮操作按下查看2.视图2将使用您告诉它的任何内容进行初始化。按下视图2中的按钮将弹出视图并将其返回到视图1 ...
我希望有所帮助。如果您需要更多具体帮助,请提供更多信息,我应该能够为您提供进一步的帮助。
答案 2 :(得分:0)
声明BOOL以检查视图是否隐藏。
在.h
BOOL _isContentVisible;
在.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) {
}
}];
}