Xcode覆盖故事板布局

时间:2014-04-11 17:29:22

标签: ios objective-c xcode storyboard override

快速提问,我到处寻找答案无济于事。我有一个stroyboard加载tabViewController作为初始视图。第一个选项卡是自动选择和加载的(这就是我想要的)。我以编程方式定制了此视图的布局。它有一个UIImage和6个UIButtons。我在代码中以proprotionately调整了一切。当ViewController加载时,它不会应用我的编程格式。如果我离开选项卡或选择一个按钮,然后返回到ViewController,那里的格式正确 IS 。我不明白为什么它不加载我编程的格式开始。我通过调用函数在viewDidLoad中初始化了格式但是它仍然加载了storyboard布局。请指教。

谢谢你

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self supportedInterfaceOrientations];

    [self orientationAdjust];
    NSLog(@"[INFO] %@ loaded",self);

    [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(orientationAdjust:) name: UIApplicationDidChangeStatusBarOrientationNotification object: nil];

}

-(void)orientationAdjust
{
    navHeight = self.navigationController.navigationBar.frame.size.height;
    tabBarHeight = self.tabBarController.tabBar.frame.size.height;
    statusBarSize = [[UIApplication sharedApplication] statusBarFrame];


    screen = [[UIScreen mainScreen] bounds];
    screenHeight = CGRectGetHeight(screen);
    screenWidth = CGRectGetWidth(screen);
    screenCenter = CGRectGetMidX(screen);


    orientation = [[UIDevice currentDevice] orientation];

    if (UIDeviceOrientationIsLandscape(orientation))
    {
        halfScreen = screenHeight / 2;
        statusBarHeight = CGRectGetWidth(statusBarSize);

        banner.frame = CGRectMake(0, statusBarHeight + navHeight - 10, screenHeight, screenWidth / 3.5);
        bannerHeight = CGRectGetHeight(banner.frame);
        bannerWidth = CGRectGetWidth(banner.frame);
        btnKits.frame = CGRectMake(halfScreen - (screenHeight / 2.5), navHeight + statusBarHeight + bannerHeight - 10, screenHeight / 2.5, screenWidth / 8);
        btnFusers.frame = CGRectMake(halfScreen - (screenHeight / 2.5), navHeight + statusBarHeight + bannerHeight + screenWidth / 8 - 10, screenHeight / 2.5, screenWidth / 8);
        btnKitId.frame = CGRectMake(halfScreen - (screenHeight / 2.5), navHeight + statusBarHeight + bannerHeight + screenWidth / 4 - 10, screenHeight / 2.5, screenWidth / 8);
        btnTips.frame = CGRectMake(halfScreen , navHeight + statusBarHeight + bannerHeight - 10, screenHeight / 2.5, screenWidth / 8);
        btnResets.frame = CGRectMake(halfScreen , navHeight + statusBarHeight + bannerHeight + screenWidth / 8 - 10, screenHeight / 2.5, screenWidth / 8);
        btnExit.frame = CGRectMake(halfScreen , navHeight + statusBarHeight + bannerHeight + screenWidth / 4 - 10, screenHeight / 2.5, screenWidth / 8);
        [self setTextSize];



    }
    else if (UIDeviceOrientationIsPortrait(orientation))
    {

        statusBarHeight = CGRectGetHeight(statusBarSize);
        halfScreen = CGRectGetWidth(screen) / 2;
        banner.frame = CGRectMake(0, statusBarHeight + navHeight + 10, screenWidth, screenHeight / 8);
        bannerHeight = CGRectGetHeight(banner.frame);
        bannerWidth = CGRectGetWidth(banner.frame);
        CGFloat btnHeight = (screenHeight - tabBarHeight - bannerHeight) / 8;
        btnKits.frame = CGRectMake(halfScreen - (screenWidth/2.5), navHeight + statusBarHeight + bannerHeight + 10, screenWidth *.75, btnHeight);
        btnFusers.frame = CGRectMake(halfScreen - (screenWidth/2.5), navHeight + statusBarHeight + bannerHeight + btnHeight + 10, screenWidth *.75, btnHeight);
        btnKitId.frame = CGRectMake(halfScreen - (screenWidth/2.5), navHeight + statusBarHeight + bannerHeight + (btnHeight * 2) + 10, screenWidth *.75, btnHeight);
        btnTips.frame = CGRectMake(halfScreen - (screenWidth/2.5), navHeight + statusBarHeight + bannerHeight  + (btnHeight * 3) + 10, screenWidth *.75, btnHeight);
        btnResets.frame = CGRectMake(halfScreen - (screenWidth/2.5), navHeight + statusBarHeight + bannerHeight +  (btnHeight * 4) + 10, screenWidth *.75, btnHeight);
        btnExit.frame = CGRectMake(halfScreen- (screenWidth/2.5), navHeight + statusBarHeight + bannerHeight +  (btnHeight * 5) + 10, screenWidth *.75, btnHeight);
        [self setTextSize];




    }



}

2 个答案:

答案 0 :(得分:1)

好的,所以我发现了问题。当编译器进入orientationAdjust初始构建时的方向值是UIDeviceOrientationUnknown所以我添加了

else if (orientation == UIDeviceOrientationUnknown)

条件与我想要的格式。这加载了我需要的视图。

感谢大家为我调查此事。

答案 1 :(得分:-1)

尝试将translatesautoresizingmaskintconstraints设置为NO。