3

我需要在左侧添加一个子视图UIViewController,当主视图被隐藏(纵向)时,它向用户显示屏幕左侧附近有东西。并且这个视图必须随着 的左边部分移动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];

它在第一次生效(主视图边界之外的子视图显示,但在第一次显示/隐藏动画后它们消失并且即使我再次调用此方法也不会出现)

4

4 回答 4

6

您可以将视图直接添加到窗口中view,但您必须根据设备旋转的时间手动管理其位置。添加到 的视图window.view将显示在 上方rootViewController.view

于 2013-03-05T21:39:33.077 回答
3

我在这里为您描述了一个简单的逻辑:(如何添加并从您的主视图或详细视图UIViewWindow调用它)

创建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];
}

在这里创建一个简单 UIButtonDetailViewController.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 from 的代码,AppDelegate不要忘记添加#import "AppDelegate.h"DetailViewController.m

-(void)btnShowViewTapped:(UIButton *) Sender
{
    AppDelegate *del = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    [del performSelector:@selector(CreateViewInWindow) withObject:nil afterDelay:0];
}

上面的代码是您问题的简单逻辑,它可能对您有所帮助。

于 2013-03-07T14:54:00.097 回答
2

在我看来,您的应用程序可以从PKRevealController中受益。

于 2013-03-12T19:22:42.237 回答
1

如果您使用笔尖,请尝试在标识中取消选择自动布局选项并键入 pan 否则设置自动调整大小掩码以查看当前剪辑。我相信它会解决问题

于 2013-03-12T11:37:11.933 回答