Невозможно изменить размер UIView в IB


88

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

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

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

Благодарность!

Ответы:


81

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


1
Спасибо, верно. После того, как я обновил xcode и IB, строка состояния была включена по умолчанию. У других он выключен.

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

1
Очень полезно. Просто выключите строку состояния, отрегулируйте размер, а затем снова включите строку состояния.
Wollan 09

9
Этот параметр работал для ViewController.xib в Xcode 4.3.3: «Моделируемые метрики - Размер: произвольная форма». После этого включается настройка размера просмотра. Также удалите параметр «Масштаб для заполнения в режиме просмотра» (чуть ниже смоделированных показателей).
defvol

uuuugh, мне действительно не нравится эта IDE
Сайк Каски

80

Чтобы добиться этого в XCode 4.6.3 / 5.0.2, вам необходимо выполнить снимок экрана ниже:

  1. В разделе "Инспектор файлов" -> снимите флажок Use Auto Layout
  2. Нажмите на Селектор атрибутов и выберите Freeformразмер.

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

введите описание изображения здесь


40

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


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

Спасибо друг. Я так долго искал.
natanavra

Обратите внимание на то, что теперь это: «Не указано» вместо «Нет». (У меня версия 3.2.3)
IcyBlueRose

Подтверждаю, что iPad "не указан", спасибо Томас Мон, вы сэкономили мне несколько часов: D
Qlimax

Я вижу это только для контроллеров представления, а не представлений
BigBoy1337

26

Как и в Xcode 4.2, iOS 5.0.1, моделируемые метрики по умолчанию включают имитацию атрибута size UIViewControllers в значение Inferred.

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


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

4

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


1

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

#define RECTLOG (rect) (NSLog (@ "" #rect @ "x:% fy:% fw:% fh:% f", rect.origin.x, rect.origin.y, rect.size.width, rect . размер. высота));

в viewDidLoad

- (void) viewDidLoad {
    [супер 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

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

1

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

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

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

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


0

Я по другому разобрал ...

откройте свой xib в любимом текстовом редакторе и отредактируйте эту строку

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

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

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


0

введите описание изображения здесьВ раскадровке выберите UIVIew и перейдите в инспектор атрибутов, измените размер UIVIew на «FreeForm» вместо «Inferred».

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.