Измените размер UIView, чтобы разрешить пространство для рекламного блока.
Я пытаюсь добавить рекламный блок над подклассом UIView RCTRootView
. Это переместит RCTRootView
примерно на 50 пикселей. Это моя текущая попытка.
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@"test"
launchOptions:launchOptions];
CGRect frame = rootView.frame;
frame.size.height -= 50;
rootView.frame = frame;
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.autoresizesSubviews = YES;
UIViewController *rootViewController = [[UIViewController alloc] init];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
return YES;
Это проект React Native, поэтому используйте StoryBoard. Как изменить размер rootView?
Как я могу создать экземпляр и добавить viewController в UIWindow, который находится выше rootView (рекламного блока)?
Ответы
Ответ 1
Попробуйте это, возможно, это поможет, но, вероятно, решение этого - это React лучше, чем изменение размера экрана
UIViewController *rootViewController = [[UIViewController alloc] init];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
rootViewController.view.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height-50);
Ответ 2
Вы можете использовать контроллер вида контейнера, чтобы составить составные 2 контроллера представления в один.
-
Создать контейнерViewController:
UIViewController* containerViewController = [[UIViewController alloc] init];
-
Создайте контроллеры дочерних представлений, которые вы добавите в контроллер контейнера:
В вашем случае они будут rootViewController
и adViewController
, в примере я буду называть их firstChildViewController
и secondChildViewController
).
UIViewController* firstChildViewController = [[UIViewController alloc] init];
UIViewController* secondChildViewController = [[UIViewController alloc] init];
-
Добавьте контроллеры дочерних элементов в контроллер контейнера в правильном порядке:
Если firstChildViewController
должен быть выше secondChildViewController
, сначала добавьте secondChildViewController
а затем firstChildViewController
для создания иерархии правильных подзапросов).
Не забывайте о расположении ваших представлений диспетчера представлений вашего ребенка (TODO устанавливается там, где это необходимо).
[containerViewController addChildViewController:firstChildViewController];
[containerViewController.view addSubview:firstChildViewController.view];
// TODO: layout firstChildViewController.view in containerViewController.view here
[firstChildViewController didMoveToParentViewController:containerViewController];
[containerViewController addChildViewController:secondChildViewController];
[containerViewController.view addSubview:secondChildViewController.view];
// TODO: layout secondChildViewController.view in containerViewController.view here
[secondChildViewController didMoveToParentViewController:containerViewController];
В представлениях диспетчера представлений контейнера макета доверяет им обычный UIView
и использует предпочтительный метод для установки их координат и размеров (автозапуск или макет вручную).
Чтобы переместить вид вниз на 50 пикселей, вы должны, например, ограничить нижнюю часть верхнего вида сверху верхней части и высотой верхнего вида до 50.
Там вы идете, у вас есть два диспетчера представлений, как вам нужно, и все, что вам нужно сделать, - установить containerViewController
в window
rootViewController
:
[window setRootViewController:containerViewController];
Надеюсь, это поможет.
Ответ 3
Как предложил mihir mehta раскадровка - наиболее удобный способ обработки пользовательского интерфейса в iOS. Вот ссылка, откуда вы можете научиться добавлять рассказ. Создание новой раскадровки в XCode и ее основной (черный экран в симуляторе). Также есть обширные учебные пособия по теме.