Рамка приложения оставляет пустую строку вверху - PullRequest
1 голос
/ 12 мая 2010

Любые подсказки, почему мой программно определенный UIScrollView (с использованием фрейма приложения) всегда оставляет пустое пространство вверху (ниже панели навигации) в 20 пикселей. Как я могу закрыть это?

UIScrollView *vScrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
vScrollView.backgroundColor = [UIColor redColor];

Мой экран выглядит так:

  • строка состояния
  • - Панель навигации
  • --- таинственный пробел (10px?)
  • ---- мой Scrollviewcontent (с красным цветом фона)

Как мне назвать размер кадра приложения, чтобы избежать этого пробела?

Ответы [ 5 ]

4 голосов
/ 12 мая 2010

Я обнаружил, что я использую неправильные координаты кадра "applicationFrame".Все отлично работает при изменении его на границы.

UIScrollView *vScrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
1 голос
/ 28 июня 2010

UIScreen-applicationFrame - это полноэкранный прямоугольник с удаленной строкой состояния (часами). Поскольку ваш вид прокрутки находится внутри области просмотра контроллера навигации, вам необходимо использовать координаты в координатном пространстве внутреннего вида.

Даже использование UIScreen-bounds не дает вам совершенно правильного результата, поскольку этот прямоугольник будет иметь полный размер экрана, включая пространство, которое должно занимать панели навигации. Используя -bounds, вы обнаружите, что ваш UIScrollView на самом деле работает на 64 пикселя от нижней части экрана.

Предполагая, что вы создаете представление прокрутки в методе -loadView UINavigationController, примерно так должно работать:

- (void)loadView {
  [super loadView];
  UIScrollView *sv = [[UIScrollView alloc] initWithFrame:self.view.bounds];
  [self.view addSubview:sv];
  [sv release];
}
0 голосов
/ 09 декабря 2013

Я столкнулся с аналогичной проблемой с UIScrollView, который создается программно. Мне нужно, чтобы содержимое прокрутки отображалось в строке состояния, начиная с x-0 и y-0. Он работал, пока я не встроил свой ViewController в контроллер навигации. Панель навигации скрыта для всех экранов. Но тогда у UIScrollView был таинственный верхний пробел в 20 пикселей. Перепробовал все, но у меня сработала следующая строка кода.

self.automaticallyAdjustsScrollViewInsets = NO;

Добавлено выше в моем методе viewDidLoad чуть выше, где я создавал UIScrollView. Надеюсь, это поможет кому-то вроде меня.

EDIT:

Нашел способ сделать это в Интерфейсном Разработчике:

  • Выберите контроллер представления, который содержит UIScrollView.
  • Открыть инспектор атрибутов.
  • Снимите флажок «Настроить вкладки просмотра прокрутки». в разделе «Просмотр контроллера».
0 голосов
/ 12 мая 2010

Вы скрываете строку состояния в делегате приложения?

- (void) applicationDidFinishLaunching:(UIApplication *)application {
    [application setStatusBarHidden:YES];
    ...
}
0 голосов
/ 12 мая 2010

Что ваше приложение сообщает в файле info.plist об использовании строки состояния? Это включено или отключено? Если я правильно понимаю, вы смотрите в строке состояния 20 пикселей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...