2014-10-29 5 views
9

Ширин панели навигации остается 320 даже для iPhone 6 (которая нуждается в 375)Xcode 6 раскадровки ширины панели навигации не полная ширина для iPhone 6

Там нет никаких изменений внешнего вида навигационной панели или фрейма через код.

Простой контроллер вид встроенный в UINavigationController

Simulator-Screenshot

Xcode говорит ширина на раскадровке еще 320, (и это не позволяет мне изменить).

Storyboard-Screenshot

РЕДАКТИРОВАТЬ: Навигационный контроллер в вопросе имеет идентификатор раскадровки и представляются модально поверх другой контроллер представления.

+0

где делает это раскадровка значение Navbar по умолчанию (320) происходит от ?? это должно быть в некоторых начальных настройках сборки или в plist. –

+0

Является ли это новым проектом Xcode 6 или это просто более старый проект, открытый в Xcode 6? – cojoj

+0

Это новый проект Xcode 6, но я изначально забыл добавить изображения запуска ... Навигационная панель работала тогда ... После того, как я добавил изображения, навигационная панель начала действовать странно. – sambhav7890

ответ

2

попробуйте добавить контроллер навигации программно, а затем нажмите или представите контроллер вида. Это должно работать

+0

Это исправило проблему, но я до сих пор не понимаю, почему это произошло в первую очередь. – sambhav7890

0

У меня была та же проблема, реализующий эту категорию:

// 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 

метод [супер sizeThatFits: размер] возвращавшегося неправильный размер так, добавив следующую строку после того, как супер метод будет исправить.

новыйSize.width = self.window.bounds.size.width;

Похоже, что раскадровка автоматически включает в себя категорию, поэтому добавление ее программно работает.

0

Я думаю, что вы создали расширение, как показано ниже Панель навигации:

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 
    } 
} 
Смежные вопросы