ios - 如何将 View 添加到整个屏幕

标签 ios objective-c xcode view navbar

我有一个 2 vc,从一个屏幕推送到另一个屏幕。在我的 vc2 中,我以编程方式添加了导航栏标题、栏按钮。但是当我添加 View 时,从顶部开始减少了 10 个点。没有完全显示。我尝试了所有的可能性。附上图片:

在我的 vc2 中:

- (void)viewDidLoad {
    [super viewDidLoad];
    _menuView.hidden = YES;
    [self navItems];
}

    -(void)navItems{

        UIImage* filterImage = [UIImage imageNamed:@"filter.png"];
        CGRect frameimg = CGRectMake(0,0, 15,15);

        filterBtn = [[UIButton alloc] initWithFrame:frameimg];
        [filterBtn setBackgroundImage:filterImage forState:UIControlStateNormal];

        [filterBtn addTarget:self action:@selector(MenuTap:) forControlEvents:UIControlEventTouchUpInside];
        UIBarButtonItem *filter =[[UIBarButtonItem alloc] initWithCustomView:filterBtn];
        self.navigationItem.rightBarButtonItem = filter;

        self.title = @"Demo";
         self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
    }
- (IBAction)MenuTap:(id)sender
{


     _menuView.hidden = NO;

//1
//   [self.navigationController.view addSubview:_menuView];
//    [self.view addSubview:_menuView];

    //2
//    UIWindow *window = [[[UIApplication sharedApplication] delegate] window];
//    [window addSubview: _menuView];
//

//3
   // UIWindow *currentWindow = [UIApplication sharedApplication].keyWindow;
    //[currentWindow addSubview:_menuView];


//4
  //[[UIApplication sharedApplication].windows.lastObject addSubview:_menuView];

//5
   // self.navigationController.navigationBar.layer.zPosition = -1;
    //[self.view addSubview:_menuView];

}

enter image description here 但是不能完全展示任何想法吗?

最佳答案

根据你的问题在这里添加了详细的答案,如果你想在状态栏下方显示,那么你需要先获取状态栏高度,然后你需要添加你需要多少的y位置。

 - (IBAction)MenuTap:(id)sender
{
  _menuView.hidden = NO;
  //initially getStatusbar height
  float statusBarHeight = [self statusBarHeight];
  // assign your subview to window bounds
  _menuView.frame = [[UIScreen mainScreen] bounds];
  CGRect frameRect = _menuView.frame;
  // convert your y- coordinates based on your need
  frameRect.origin.y = statusBarHeight;
 _menuView.frame = frameRect;
 [self.navigationController.view addSubview:_menuView];

}



-(float) statusBarHeight
{
    CGSize statusBarSize = [[UIApplication sharedApplication] statusBarFrame].size;
    return MIN(statusBarSize.width, statusBarSize.height);
}

关于ios - 如何将 View 添加到整个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54706125/

相关文章:

iphone - 主要功能上的 Sigabrt

ios - 使用异步 NSURLConnection 获取警告

iphone - 获取当前时间并保持更新 - Objective-C

ios - 如何将 iOS Swift 3 应用程序中的数据写入 BLE (HM-10)?

ios - 升级到Sierra后, "The executable was signed with invalid entitlements."

ios - 在 Swift 中解码 JSON Web token

ios - 在翻译动画期间跟踪 UIView 位置

ios - 如何在 iOS 9 中启用应用程序传输安全性时加载 HTTP URL?

iphone - 即使正确设置了 NSTimezone,仍然存在 NSDateFormatter 结果问题,为什么?

iPhone/iOS 上的 Java 通过 LLVM