2009-07-06 4 views
82

Возможно, что-то простое, но я не могу понять, почему я не могу изменить размер UIView в xib в Interface Builder.Невозможно изменить размер UIView в IB

Я создал новый вид XIB в xcode и в инспекторе размеров, ширина и высота отключены и выделены серым цветом до 320 на 460. Это странно, так как я могу изменить размер для двух других видов (связанных с другие две позиции панели вкладок).

Я не уверен, если это не имеет ничего общего с, но я недавно обновил SDK до 3.

Спасибо!

ответ

78

Я думаю, что вы не можете редактировать размер при имитации любых элементов пользовательского интерфейса, таких как строка состояния в Interface Builder. Вы можете попытаться отключить моделируемые элементы, если они включены. Не совсем понятно, почему это так, так что по достоинству оцените отзывы от тех, кто знает, почему именно это - должна быть веская причина.

+1

Спасибо, что так. После обновления xcode и IB строка состояния была включена по умолчанию. У остальных это происходит. – 2009-07-06 15:49:11

+0

+1 вам обоим .. !! –

+1

Как и в Xcode 4.2, iOS 5.0.1 это изменилось. Мой ответ ниже объясняет, как это можно достичь. – lol

40

Часть, которую вы ищете, находится на первой панели инспекторов (Command-1). В верхней части находится раздел, который помечен как элементы имитируемого пользовательского интерфейса. По умолчанию строка состояния включена. Вы должны убедиться, что для всех трех выбрано значение None.

+2

Спасибо, эти ответы просто сэкономили мне массу времени! Кто-нибудь знает, почему IB это делает? – Gregor

+0

+1 Это меня заводило! Благодаря! – Bogatyr

+0

Спасибо, помощник. Я искал этот. – natanavra

4

Просто перейдите к инспектору, перейдите на первую панель (или нажмите команду-1), а затем измените поля с пометкой «Строка состояния», «Верхняя панель» и «Нижняя панель» на «Нет» в разделе «Имитируемые элементы пользовательского интерфейса». Вам может понадобиться щелкнуть маленький треугольник, чтобы сделать их видимыми.

0

Смешной У меня есть аналогичная проблема. Я удалил все представления из xib-файла и снова добавил представление. Установите строку состояния как «неуказанную», чтобы строка состояния не была размещена. Представление, при добавлении, создается с x = 0, y = 0, w = 320 h = 460 вместо (0,0,320,480), как я и ожидал. После изменения высоты до 480 и подключения ее к владельцу файла и изменения цвета, чтобы сделать его отличительным по отношению к фону. Я понимаю, что между верхней частью экрана и представлением была белая полоса. я дополненной мой код:

#define RECTLOG(rect) (NSLog(@"" #rect @" x:%f y:%f w:%f h:%f", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height)); 

в viewDidLoad

 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    RECTLOG(self.view.frame); 
} 

Оказывается, что точка зрения, как он загружен из IB фактически (0, 20, 320, 480) В работе вокруг Я сбрасываю кадр представления с помощью self.view.frame = CGRectMake (0, 0, 320, 480);

Я использую IB 3.2.5

Я хотел бы знать о маленьком исправлении для этого.

+3

FYI, вы можете использовать NSStringFromCGRect (rect), чтобы получить строку для печати, представляющую CGRect. – Berry

+0

Это был отличный FYI, я проверил его, и вы также можете получить строковое значение из CGPoint и CGSize! очень повар, спасибо. – FierceMonkey

1

Я заметил, что UIView, автоматически созданный при создании xib-файла, не может быть изменен из панели размеров или краев.

Все, что я сделал, это добавить еще один UIView и перетащить все из старого UIView в новый, а затем удалить старый.

Он решил проблему для меня, но да, я думаю, что существует основная проблема с создателем интерфейса для Apple, чтобы решить (кто-то поправьте меня, если я ошибаюсь).

Я использую встроенный конструктор интерфейса XCode 4.

25

Как и в Xcode 4.2, iOS 5.0.1, моделируемые по умолчанию метрики включают в себя моделирование атрибута 'size' UIViewControllers на «Inferred»

Если вы измените этот атрибут на «Freeform», вы можете изменить размер UIView, содержащегося в UIViewController, одновременно имитируя строку состояния (или любой другой из моделирования для этого вещества)

+1

Атрибут размера теперь по умолчанию имеет значение «Retina 4 Full screen», но изменение его на «Freeform» по-прежнему работает. –

63

для того, чтобы добиться того, что в XCode 4.6.3/5.0.2 вы должны следовать скриншот ниже:

  1. в разделе «Инспектор» Файл -> untick Use Auto Layout
  2. Нажмите «Атрибуты S» Избиратель & Выбрать Freeform для размера

Это необходимо при создании headerView для Tableview

enter image description here

0

Я отсортирован это по-другому ...

открыть XIB с ваш любимый текстовый редактор и отредактируйте эту строку

 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CompassViewController"> 

CompassViewController - это ваше имя класса, с которым вы пытаетесь связать свой nib/xib.

Просто отредактируйте имя своего класса с правильным названием класса, и все готово;)

Смежные вопросы