Визуальное размещение вьюва при insertSubview

20 views
Skip to first unread message

denism

unread,
Feb 17, 2011, 5:30:34 AM2/17/11
to iPhoneDevCamp Ukraine
Мне кажется, что проблема тривиальная и возможно я ее смогу решить до
получения первого ответа. Но все таки...
Создаем элементарное приложение (пусть даже не универсальное) как
Window-based Application.
Создаем класс порожденный от UIViewController с Xib-ом -
RootViewController.
В ксибе размещаем 2 лейбла.
Один в самом топе, второй в самом боттме.
В didFinishLaunchingWithOptions AppDelegate пишем:

RootViewController* controller = [[RootViewController alloc]
initWithNibName:@"RootViewController" bundle:nil];
self.rootController = controller;
[self.window insertSubview:controller.view atIndex:0];
[controller release];

Записываем, компилируем и запускаем.... Чтио видим? Нижний лейбл явно
на пикселей 20 выше нижнего края, а верхний вообще не видно.... Что за
косяк?

denism

unread,
Feb 17, 2011, 6:20:36 AM2/17/11
to iPhoneDevCamp Ukraine
Ну, побороть - поборол. Но как-то бредово...

Перед добавлением вьюва как саб-вьюв, мы ему выставляем фрейм...
controller.view.frame = CGRectMake(0, 18, 320, 416);

Но, как по мне, это что-то не то.

TT KILEW

unread,
Feb 17, 2011, 7:03:08 AM2/17/11
to iphoned...@googlegroups.com
2011/2/17 denism <dmazo...@gmail.com>:

> Ну, побороть - поборол. Но как-то бредово...
>
> Перед добавлением вьюва как саб-вьюв, мы ему выставляем фрейм...
>    controller.view.frame = CGRectMake(0, 18, 320, 416);
>
> Но, как по мне, это что-то не то.
>
> On Feb 17, 12:30 pm, denism <dmazour...@gmail.com> wrote:
>> Мне кажется, что проблема тривиальная и возможно я ее смогу решить до
>> получения первого ответа. Но все таки...
>> Создаем элементарное приложение (пусть даже не универсальное) как
>> Window-based Application.
>> Создаем класс порожденный от UIViewController с Xib-ом -
>> RootViewController.
>> В ксибе размещаем 2 лейбла.
>> Один в самом топе, второй в самом боттме.
>> В didFinishLaunchingWithOptions AppDelegate пишем:
>>
>>     RootViewController* controller = [[RootViewController alloc]
>> initWithNibName:@"RootViewController" bundle:nil];
>>     self.rootController = controller;
>>     [self.window insertSubview:controller.view atIndex:0];
>>     [controller release];

а чего не просто addSubView?

У тебя все съезжает ровно на высоту статус бара


>>
>> Записываем, компилируем и запускаем.... Чтио видим? Нижний лейбл явно
>> на пикселей 20 выше нижнего края, а верхний вообще не видно.... Что за
>> косяк?
>

> --
> You received this message because you are subscribed to the Google Groups "iPhoneDevCamp Ukraine" group.
> To post to this group, send email to iphoned...@googlegroups.com.
> To unsubscribe from this group, send email to iphonedevcamp...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/iphonedevcampua?hl=en.
>
>

--
С уважением,
Павел Тайкало  / Paul Taykalo
Stanfy, iPhone apps development in Ukraine
http://stanfy.com.ua/blog
skype: tt.kilew, tel.: +38 097 86 1024 1
http://twitter.com/tt_kilew

denism

unread,
Feb 17, 2011, 7:55:06 AM2/17/11
to iPhoneDevCamp Ukraine
Это я понимаю... Вопрос - почему съезжает?
Ну а на счет addSubview/insertSubview - непринципиально.

On Feb 17, 2:03 pm, TT KILEW <tt.ki...@gmail.com> wrote:
> 2011/2/17 denism <dmazour...@gmail.com>:

> > For more options, visit this group athttp://groups.google.com/group/iphonedevcampua?hl=en.


>
> --
> С уважением,
> Павел Тайкало  / Paul Taykalo

> Stanfy, iPhone apps development in Ukrainehttp://stanfy.com.ua/blog
> skype: tt.kilew, tel.:+38 097 86 1024 1begin_of_the_skype_highlighting            +38 097 86 1024 1      end_of_the_skype_highlightinghttp://twitter.com/tt_kilew- Hide quoted text -
>
> - Show quoted text -

Talisman

unread,
Feb 17, 2011, 3:20:07 PM2/17/11
to iPhoneDevCamp Ukraine
Скорей всего, ты в нибе RootViewController-а забыл вьюхе выставить
наличие/отсутствие статус бара.

Denis Sedura

unread,
Feb 17, 2011, 3:50:19 PM2/17/11
to iphoned...@googlegroups.com, denism
Сегодня такое же исправляли.
Создай в MainWindow в xib'e контроллер и свяжи его со своим, он будет создаваться вместе с мейнвиндов и ничего не будет сдвигаться. А дальше просто  [window addSubview:сontroller.view];
т.е в *.h
RootViewController* controller;

@property (nonatomic, retain) IBOutlet RootViewController* controller;

а *.m @synthesize и release не забудь

 

Denis Mazourick

unread,
Feb 18, 2011, 3:54:42 AM2/18/11
to Denis Sedura, iphoned...@googlegroups.com

Спасибо за информацию. Будем пробовать. Но это получается, что любые окна, которые мы хотим создавать динамически (например, я хочу динамически создать UITabBarController и наполнить его кнопками и вьювами) будут иметь подобный результат?

Т.е. без связок через интерфейс-дизайнер никак?

2011/2/17 Denis Sedura <denis....@gmail.com>

Talisman

unread,
Feb 18, 2011, 5:08:18 AM2/18/11
to iPhoneDevCamp Ukraine
Конечно нет! Создание контроллера в коде тут явно не при чем.

On Feb 18, 10:54 am, Denis Mazourick <dmazour...@gmail.com> wrote:
> Спасибо за информацию. Будем пробовать. Но это получается, что любые окна,
> которые мы хотим создавать динамически (например, я хочу динамически создать
> UITabBarController и наполнить его кнопками и вьювами) будут иметь подобный
> результат?
>
> Т.е. без связок через интерфейс-дизайнер никак?
>

> 2011/2/17 Denis Sedura <denis.sed...@gmail.com>

Vladimir Pouzanov

unread,
Feb 18, 2011, 6:03:33 AM2/18/11
to iphoned...@googlegroups.com
Это симуляция интерфейса, на реальное отображение не влияет.

По сабжу:
When configuring the root view of the window, you are responsible for
setting its initial size and position within the window. For
applications that do not include a status bar, or that display a
translucent status bar, set the view size to match the size of the
window. For applications that show an opaque status bar, position your
view below the status bar and reduce its size accordingly. Subtracting
off the status bar height prevents the top portion of your view from
being obscured.

Доки рулят же ;)

2011/2/17 Talisman <yury....@gmail.com>:


> Скорей всего, ты в нибе RootViewController-а забыл вьюхе выставить
> наличие/отсутствие статус бара.
>

> --
> You received this message because you are subscribed to the Google Groups "iPhoneDevCamp Ukraine" group.
> To post to this group, send email to iphoned...@googlegroups.com.
> To unsubscribe from this group, send email to iphonedevcamp...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/iphonedevcampua?hl=en.
>
>

--
Sincerely,
Vladimir "Farcaller" Pouzanov
http://farcaller.net/

Talisman

unread,
Feb 18, 2011, 6:44:28 AM2/18/11
to iPhoneDevCamp Ukraine
Ага, точно, спс! :)

On Feb 18, 1:03 pm, Vladimir Pouzanov <farcal...@gmail.com> wrote:
> Это симуляция интерфейса, на реальное отображение не влияет.
>
> По сабжу:
> When configuring the root view of the window, you are responsible for
> setting its initial size and position within the window. For
> applications that do not include a status bar, or that display a
> translucent status bar, set the view size to match the size of the
> window. For applications that show an opaque status bar, position your
> view below the status bar and reduce its size accordingly. Subtracting
> off the status bar height prevents the top portion of your view from
> being obscured.
>
> Доки рулят же ;)
>
> 2011/2/17 Talisman <yury.ko...@gmail.com>:
>
> > Скорей всего, ты в нибе RootViewController-а забыл вьюхе выставить
> > наличие/отсутствие статус бара.
>
> > --
> > You received this message because you are subscribed to the Google Groups "iPhoneDevCamp Ukraine" group.
> > To post to this group, send email to iphoned...@googlegroups.com.
> > To unsubscribe from this group, send email to iphonedevcamp...@googlegroups.com.
> > For more options, visit this group athttp://groups.google.com/group/iphonedevcampua?hl=en.
Reply all
Reply to author
Forward
0 new messages