以编程方式在状态栏和uiimageview之间添加垂直空间约束

时间:2013-12-12 19:32:13

标签: iphone ios7 xcode5

我试图让它适用于新旧设备iPhone 4s和5s。在两个设备上,它不会在状态栏和图像视图之间显示垂直空间约束。

- (void)viewDidLoad{
CGSize result = [[UIScreen mainScreen] bounds].size;

if(result.height == 480)
{
 baseView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
}

if(result.height == 568)

{
    baseView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];
}

UIGraphicsBeginImageContext(CGSizeMake(320, 460));
if(result.height == 480)
{

    [[UIImage imageNamed:@"newone.png"] drawInRect:CGRectMake(0, 0, 320, 460)];

    UIImage *picture = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    self.view.backgroundColor = [UIColor colorWithPatternImage:picture];
}
     UIGraphicsBeginImageContext(CGSizeMake(320, 548));

if(result.height == 568)

{

            [[UIImage imageNamed:@"newone.png"] drawInRect:CGRectMake(0, 0, 320, 548)];
    UIImage *picture = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    self.view.backgroundColor = [UIColor colorWithPatternImage:picture];


    //[self.view addConstraints:[NSLayoutConstraint
                               //constraintsWithVisualFormat:@"V:|-190-[picture]-280-|"
                               //options:NSLayoutFormatDirectionLeadingToTrailing
                              // metrics:nil
                              // views:NSDictionaryOfVariableBindings(picture)]];

  }

    [self.view addSubview:baseView];

如何在状态栏图像视图之间以编程方式显示垂直空间约束的任何想法。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您的“图片视图”是带有彩色背景的根视图(即self.view)。在iOS 7中,根视图是全屏的,并且状态栏不足。

我建议改为设置baseView的背景色。然后使用自动布局将baseView固定到top layout guide

此外,使用自动布局定位baseView,而不是获取屏幕尺寸并将尺寸与幻数进行比较。