Iphone 在拆分视图应用程序中隐藏主视图。。?

Iphone 在拆分视图应用程序中隐藏主视图。。?,iphone,objective-c,ipad,Iphone,Objective C,Ipad,我创建了基于拆分视图的ipad应用程序,其中主视图是表视图,而详细视图显示图像。。我需要显示图像适合屏幕100%在横向模式。 这可能是打开按钮事件或双击事件。。我该怎么做呢。 提前谢谢 您可以在应用程序中使用一个辅助窗口,在包含拆分视图的主窗口顶部按需显示该窗口,从而实现您想要的功能 创建一个新的UIWindow和一个新的UIViewController。将UIViewController的视图添加到新窗口中,将窗口级别设置为正值(1或更多),使其位于主窗口的顶部,然后将新窗口置于屏幕上。如果将

我创建了基于拆分视图的ipad应用程序,其中主视图是表视图,而详细视图显示图像。。我需要显示图像适合屏幕100%在横向模式。 这可能是打开按钮事件或双击事件。。我该怎么做呢。
提前谢谢

您可以在应用程序中使用一个辅助窗口,在包含拆分视图的主窗口顶部按需显示该窗口,从而实现您想要的功能

创建一个新的UIWindow和一个新的UIViewController。将UIViewController的视图添加到新窗口中,将窗口级别设置为正值(1或更多),使其位于主窗口的顶部,然后将新窗口置于屏幕上。如果将窗口背景色设置为[UIColor clearColor],并将图像放置在新UIViewController内的视图中,直接放置在细节视图中图像的顶部,则用户不会注意到发生了任何新情况。然后,您可以将图像帧设置为全屏动画或执行任何您想要的操作。我们有时使用这种技术来支持拖放或我们自己的自定义模态视图控制器,但它也适用于您的目的

下面是一个例子:

@interface MyViewController : UIViewController @end


@interface AppDelegate : NSObject <UIApplicationDelegate> {
    MyViewController            *overlayController;
    UIWindow                    *overlayWindow;

    UIWindow                    *window;                // the main window that contains your splitview
    UINavigationController      *navigationController;  // or split view contoller, whatever, your main controller
}

@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@property (nonatomic, retain) IBOutlet UIWindow *window;

@end


@implementation MyViewController

- (void) loadView {
    self.view = [[[UIView alloc] initWithFrame: CGRectZero] autorelease];
    self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    self.view.backgroundColor = [UIColor redColor];
}

@end


@implementation AppDelegate

@synthesize window, navigationController;


- (void) click:(id) sender {
    [overlayController.view removeFromSuperview];
    [overlayController release];
    overlayController = nil;

    overlayWindow.hidden = YES;
    [overlayWindow release];
    overlayWindow = nil;
}


- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    // Add the navigation controller's view to the window and display.
    // standard stuff...
    [self.window addSubview: navigationController.view];
    [self.window makeKeyAndVisible];

    // add the overlay window
    // note that both the overlay window and controller are retained until we dismiss
    // the window, this is important!
    overlayWindow = [[UIWindow alloc] initWithFrame: [UIScreen mainScreen].applicationFrame];   // or [UIScreen mainScreen].bounds, depending on what you want
    overlayController = [MyViewController new];
    overlayController.view.frame = overlayWindow.bounds;

    UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect];

    [button addTarget: self action: @selector(click:) forControlEvents: UIControlEventTouchUpInside];
    [button setTitle: @"Done" forState: UIControlStateNormal];
    button.frame = CGRectMake( 0, 0, 100, 50 );
    button.center = overlayController.view.center;

    [overlayController.view addSubview: button];

    // the controller's view is the first and only view in the
    // new window.  this ensures you get rotation events.  Add any subviews
    // that will appear in the new window to overlayContoller.view
    [overlayWindow addSubview: overlayController.view];
    [overlayWindow setWindowLevel: 1];
    [overlayWindow makeKeyAndVisible];

    return YES;
}


- (void)dealloc {
    [overlayController release];
    [overlayWindow release];
    [navigationController release];
    [window release];
    [super dealloc];
}


@end
@接口MyViewController:UIViewController@end
@接口AppDelegate:NSObject{
MyViewController*OverlyController;
UIWindow*覆盖窗口;
UIWindow*window;//包含splitview的主窗口
UINavigationController*navigationController;//或拆分视图控制器,无论什么,您的主控制器
}
@属性(非原子,保留)IBuinavigationController*导航控制器;
@属性(非原子,保留)IBUIWindow*window;
@结束
@MyViewController的实现
-(void)负荷视图{
self.view=[[UIView alloc]initWithFrame:CGRectZero]autorelease];
self.view.autoresizingMask=UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
self.view.backgroundColor=[UIColor redColor];
}
@结束
@实现AppDelegate
@综合窗口、导航控制器;
-(无效)单击:(id)发件人{
[OverlyController.view从SuperView移除];
[覆盖控制器释放];
覆盖控制器=零;
覆盖窗口隐藏=是;
[重叠窗口释放];
叠加窗宽=零;
}
-(BOOL)应用程序:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项{
//将导航控制器的视图添加到窗口并显示。
//标准的东西。。。
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
//添加覆盖窗口
//请注意,覆盖窗口和控制器都将保留,直到我们关闭为止
//窗户,这很重要!
overlayWindow=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].applicationFrame];//或[UIScreen mainScreen].bounds,具体取决于所需内容
OverlyController=[MyViewController新建];
OverlyController.view.frame=overlayWindow.bounds;
UIButton*button=[UIButton button类型:UIButtonyPeroundRect];
[按钮添加目标:自我操作:@选择器(单击:)for ControlEvents:UIControlEventTouchUpInside];
[按钮设置标题:@“完成”状态:uicontrol状态正常];
button.frame=CGRectMake(0,0,100,50);
button.center=overlycontroller.view.center;
[OverlyController.view添加子视图:按钮];
//控制器的视图是视图中的第一个也是唯一一个视图
//新窗口。这确保您获得旋转事件。添加任何子视图
//将显示在新窗口中的overlycontoller.view
[overlayWindow添加子视图:overlayController.view];
[覆盖窗口设置窗口级别:1];
[覆盖Windows makeKeyAndVisible];
返回YES;
}
-(无效)解除锁定{
[覆盖控制器释放];
[重叠窗口释放];
[导航控制器释放];
[窗口释放];
[super dealoc];
}
@结束

您可以在应用程序中使用一个辅助窗口,在包含拆分视图的主窗口顶部按需显示该窗口,从而实现您想要的功能

创建一个新的UIWindow和一个新的UIViewController。将UIViewController的视图添加到新窗口中,将窗口级别设置为正值(1或更多),使其位于主窗口的顶部,然后将新窗口置于屏幕上。如果将窗口背景色设置为[UIColor clearColor],并将图像放置在新UIViewController内的视图中,直接放置在细节视图中图像的顶部,则用户不会注意到发生了任何新情况。然后,您可以将图像帧设置为全屏动画或执行任何您想要的操作。我们有时使用这种技术来支持拖放或我们自己的自定义模态视图控制器,但它也适用于您的目的

下面是一个例子:

@interface MyViewController : UIViewController @end


@interface AppDelegate : NSObject <UIApplicationDelegate> {
    MyViewController            *overlayController;
    UIWindow                    *overlayWindow;

    UIWindow                    *window;                // the main window that contains your splitview
    UINavigationController      *navigationController;  // or split view contoller, whatever, your main controller
}

@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@property (nonatomic, retain) IBOutlet UIWindow *window;

@end


@implementation MyViewController

- (void) loadView {
    self.view = [[[UIView alloc] initWithFrame: CGRectZero] autorelease];
    self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    self.view.backgroundColor = [UIColor redColor];
}

@end


@implementation AppDelegate

@synthesize window, navigationController;


- (void) click:(id) sender {
    [overlayController.view removeFromSuperview];
    [overlayController release];
    overlayController = nil;

    overlayWindow.hidden = YES;
    [overlayWindow release];
    overlayWindow = nil;
}


- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    // Add the navigation controller's view to the window and display.
    // standard stuff...
    [self.window addSubview: navigationController.view];
    [self.window makeKeyAndVisible];

    // add the overlay window
    // note that both the overlay window and controller are retained until we dismiss
    // the window, this is important!
    overlayWindow = [[UIWindow alloc] initWithFrame: [UIScreen mainScreen].applicationFrame];   // or [UIScreen mainScreen].bounds, depending on what you want
    overlayController = [MyViewController new];
    overlayController.view.frame = overlayWindow.bounds;

    UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect];

    [button addTarget: self action: @selector(click:) forControlEvents: UIControlEventTouchUpInside];
    [button setTitle: @"Done" forState: UIControlStateNormal];
    button.frame = CGRectMake( 0, 0, 100, 50 );
    button.center = overlayController.view.center;

    [overlayController.view addSubview: button];

    // the controller's view is the first and only view in the
    // new window.  this ensures you get rotation events.  Add any subviews
    // that will appear in the new window to overlayContoller.view
    [overlayWindow addSubview: overlayController.view];
    [overlayWindow setWindowLevel: 1];
    [overlayWindow makeKeyAndVisible];

    return YES;
}


- (void)dealloc {
    [overlayController release];
    [overlayWindow release];
    [navigationController release];
    [window release];
    [super dealloc];
}


@end
@接口MyViewController:UIViewController@end
@接口AppDelegate:NSObject{
MyViewController*OverlyController;
UIWindow*覆盖窗口;
UIWindow*window;//包含splitview的主窗口
UINavigationController*navigationController;//或拆分视图控制器,无论什么,您的主控制器
}
@属性(非原子,保留)IBuinavigationController*导航控制器;
@属性(非原子,保留)IBUIWindow*window;
@结束
@MyViewController的实现
-(void)负荷视图{
self.view=[[UIView alloc]initWithFrame:CGRectZero]autorelease];
self.view.autoresizingMask=UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
self.view.backgroundColor=[UIColor redColor];
}
@结束
@实现AppDelegate
@综合窗口、导航控制器;
-(无效)单击:(id)发件人{
[OverlyController.view从SuperView移除];
[覆盖控制器释放];
覆盖控制器=零;
覆盖窗口隐藏=是;
[重叠窗口释放];