Настройте вид в коде, который изменяется с ориентацией - PullRequest
0 голосов
/ 31 января 2010

Я установил приложение и использовал некоторый основной код из «Поваренной книги разработчика iPhone» для создания простого представления. Приложение работает корректно в портретном режиме, но при повороте размеры ячеек остаются прежними. Вот мой код:

- (void)loadView {
    //Create the full application frame (minus the status bar) - 768, 1004
    CGRect fullRect = [[UIScreen mainScreen] applicationFrame]; 

    //Create the frame of the view ie fullRect-(tabBar(49)+navBar(44)) - 768, 911
    CGRect viewRect = CGRectMake(0, 64, fullRect.size.width, fullRect.size.height-93.0);

    //create the content view to the size
    contentView = [[UIView alloc] initWithFrame:viewRect]; 
    contentView.backgroundColor = [UIColor whiteColor];

    // Provide support for autorotation and resizing 
    contentView.autoresizesSubviews = YES;
    contentView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);

    self.view = contentView; 
    [contentView release];

    // reset the origin point for subviews. The new origin is 0,0 
    viewRect.origin = CGPointMake(0.0f, 0.0f);

    // Add the subviews, each stepped by 32 pixels on each side 
    UIView *subview = [[UIView alloc] initWithFrame:CGRectInset(viewRect, 32.0f, 32.0f)]; 
    subview.backgroundColor = [UIColor lightGrayColor]; 
    [contentView addSubview:subview]; 
    [subview release];

    subview = [[UIView alloc] initWithFrame:CGRectInset(viewRect, 64.0f, 64.0f)]; 
    subview.backgroundColor = [UIColor darkGrayColor]; 
    [contentView addSubview:subview]; 
    [subview release];

    subview = [[UIView alloc] initWithFrame:CGRectInset(viewRect, 96.0f, 96.0f)]; 
    subview.backgroundColor = [UIColor blackColor]; 
    [contentView addSubview:subview]; 
    [subview release];
}

Есть ли способ перезарядки с новыми размерами при повороте или лучший способ изменения ориентации?

Спасибо JP

Ответы [ 2 ]

1 голос
/ 19 мая 2011

object.autoresizingMask = UIViewAutoresizingF flexLeftMargin | UIViewAutoresizingF flexRightMargin | UIViewAutoresizingF flexTopMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

1 голос
/ 31 января 2010

Возможно, я неправильно понимаю вашу проблему. Под "ящиками" вы подразумеваете подпредставления?

Если это так, то при просмотре подпредставления сохранят свои видимые размеры, потому что они квадратные.

В любом случае, viewDidLoad вызывается только при первой инициализации представления, обычно с кончика. Если вам нужно внести изменения в представление при его вращении, вам нужно внести изменения в willRotateToInterfaceOrientation:duration: и / или didRotateFromInterfaceOrientation:.

Чтобы изменить размеры любого вида, просто сбросьте его рамку.

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