我需要在UIViewController
的左侧部分添加一个子视图,该部分向用户显示当隐藏masterview时(纵向),屏幕左侧部分附近有某些内容。此视图必须与UISplitView
的左侧部分一起移动。像这两个图像中带箭头的视图。 (对不起俄语界面)
http://s2.uploads.ru/8EHJI.png
http://s2.uploads.ru/NhEam.png
但我的问题是,当我尝试添加这样的视图时,它会剪切到masterview的边界,并且在隐藏masterview时不可见。我想,我做错了,有一种简单的方法可以做到这一点。
更新:我试图做一些黑客攻击:
-(void) clipToBoundsRecursive:(UIView *)someView
{
NSLog(@"%@", someView);
someView.clipsToBounds = NO;
for (UIView *v in someView.subviews)
{
[self clipToBoundsRecursive:v];
}
}
并将其发送到splitviewcontroller
的视图。
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
[self clipToBoundsRecursive:splitViewController.view];
它首次生效(主视图边界显示之外的子视图,但在第一次显示/隐藏动画后,它们消失,即使我再次调用此方法也不会出现)
答案 0 :(得分:6)
您可以将视图直接添加到窗口view
,但您必须根据设备旋转的时间手动管理其位置。添加到window.view
的观看次数将显示在rootViewController.view
上方。
答案 1 :(得分:3)
我在这里为您描述了一个简单逻辑 :( 如何在UIView
中添加Window
并从您的主视图或详细视图中调用它)
在UIView
中创建#import "AppDelegate.h"
,
- (void) CreateViewInWindow
{
UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 780)];// set as u wish
myView.backgroundColor = [UIColor redColor];
// I have added myView to the Window with a specific animation , your can give animation as you like. :)
[UIView transitionWithView:self.window duration:0.5
options:UIViewAnimationOptionTransitionCrossDissolve // change to whatever animation you like
animations:^ { [self.window addSubview:myView]; }
completion:nil];
}
此处在UIButton
文件中创建一个简单的DetailViewController.m
(您可以将代码放入其中一个文件DetailViewController.m
或MasterViewController.m
)
UIButton *btnShowView = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btnShowView addTarget:self action:@selector(btnShowViewTapped:) forControlEvents:UIControlEventTouchUpInside];
btnShowView.frame = CGRectMake(20, 30, 174, 35);
//[btnLoginInner setBackgroundImage:[UIImage imageNamed:@"LoginBut.png"] forState:UIControlStateNormal];
[self.view addSubview:btnShowView];
在按钮点按的方法中,编写用于从UIView
调用AppDelegate
的代码,以及不要忘记在#import "AppDelegate.h"
中添加DetailViewController.m
,
-(void)btnShowViewTapped:(UIButton *) Sender
{
AppDelegate *del = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[del performSelector:@selector(CreateViewInWindow) withObject:nil afterDelay:0];
}
以上代码是您问题的简单逻辑,可能对您有所帮助。
答案 2 :(得分:2)
听起来我的应用可能会受益于PKRevealController。
答案 3 :(得分:1)
尝试在身份中取消选择自动布局选项,如果使用nib则输入pan,否则设置自动调整遮罩以查看当前裁剪。我相信它会解决问题