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

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

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

Я не уверен, что это имеет какое-то отношение, но я недавно обновил sdk до 3.

Спасибо!

Ответ 1

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

Ответ 2

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

  • Под "File Inspector" → untick Use Auto Layout
  • Нажмите "Выбор атрибутов" и выберите Freeform для размера

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

enter image description here

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

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

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

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

Ответ 7

Смешно, у меня есть аналогичная проблема. Я удалил все представления из 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) Как работа вокруг я reset рамки представления с self.view.frame = CGRectMake (0, 0, 320, 480);

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

Мне хотелось бы узнать немного о том, как это сделать.

Ответ 8

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

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

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

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

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