2014-10-29 21 views
9

Pasek nawigacyjny szerokość pozostaje 320 nawet do iPhone 6 (który potrzebuje 375)Xcode 6 storyboard pasek nawigacyjny szerokość nie pełnej szerokości dla iPhone 6

nie ma zmiany wyglądu paska nawigacji lub ramy poprzez kod.

Prosty kontroler widok osadzone w UINavigationController

Simulator-Screenshot

Xcode mówi szerokość w serii ujęć jest nadal 320 (i to nie pozwala mi zmienić).

Storyboard-Screenshot

EDIT: Navigation Controller w pytaniu ma identyfikator storyboard i jest przedstawiony modally przez innego kontrolera widoku.

+0

skąd ten storyboard wartość domyślna navbar (320) pochodzi z ?? musi być w niektórych początkowych ustawieniach kompilacji lub plist. –

+0

Czy to nowy projekt Xcode 6, czy jest to tylko starszy projekt otwarty w Xcode 6? – cojoj

+0

Jest to nowy projekt Xcode 6, ale początkowo zapomniałem dodać obrazy startowe ... Pasek nawigacyjny działał wtedy ... Po dodaniu obrazów, pasek nawigacyjny zaczął dziwnie działać. – sambhav7890

Odpowiedz

2

spróbuj dodać kontroler nawigacyjny programowo, a następnie naciśnij lub pokaż kontroler widoku. To powinno działać

+0

To rozwiązało problem, ale nadal nie rozumiem, dlaczego to się stało w pierwszej kolejności. – sambhav7890

0

miałem ten sam problem wykonawczy tej kategorii:

// UINavigationBar+CustomHeight.m 
// 
// Copyright (c) 2014 Maciej Swic 
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy 
// of this software and associated documentation files (the "Software"), to deal 
// in the Software without restriction, including without limitation the rights 
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
// copies of the Software, and to permit persons to whom the Software is 
// furnished to do so, subject to the following conditions: 
// 
// The above copyright notice and this permission notice shall be included in 
// all copies or substantial portions of the Software. 
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
// THE SOFTWARE. 
// 

#import "UINavigationBar+CustomHeight.h" 
#import "objc/runtime.h" 

static char const *const heightKey = "Height"; 

@implementation UINavigationBar (CustomHeight) 

- (void)setHeight:(CGFloat)height 
{ 
    objc_setAssociatedObject(self, heightKey, @(height), OBJC_ASSOCIATION_RETAIN_NONATOMIC); 
} 

- (NSNumber *)height 
{ 
    return objc_getAssociatedObject(self, heightKey); 
} 

- (CGSize)sizeThatFits:(CGSize)size 
{ 
    CGSize newSize; 

    if (self.height) { 
     newSize = CGSizeMake(self.window.bounds.size.width, [self.height floatValue]); 
    } else { 
     newSize = [super sizeThatFits:size]; 
    } 
    return newSize; 
} 

@end 

metody [Super sizeThatFits: size] wracał zły rozmiar więc dodając następującą linię po super sposób będzie go naprawić.

newSize.width = self.window.bounds.size.width;

Wygląda na to, że widoki na storyboardach zawierają kategorię, dlatego programowo działa.

0

Myślę, że stworzyliśmy rozszerzenie NavigationBar jak poniżej:

extension UINavigationBar { 

    override public func sizeThatFits(size: CGSize) -> CGSize { 
     super.sizeThatFits(size) 
     var sizeThatFits = super.sizeThatFits(size) 
     sizeThatFits.height = CGFloat(TABBAR_HEIGHT) 
     //fix for fill to width of screen in new window 
     if self.window != nil{ 
      sizeThatFits.width = self.window!.bounds.size.width 
     } 
     return sizeThatFits 
    } 
} 
Powiązane problemy