Выяснить маски авторазмера в TwUI - нижнее поле? - PullRequest
4 голосов
/ 10 июля 2011

У меня возникли проблемы с автоматическим изменением размера масок.Вот сделка: я использую недавно выпущенный TwUI, который много берет от UIKit, но он на Mac.Вот почему я отметил как для iOS, так и для Mac.Итак, я создаю вид, который должен иметь отступ 40px снизу, независимо от того, насколько велико окно по размеру.Я не разрешаю горизонтальное расширение окна по нескольким причинам.Вот как выглядит пример того, о чем я говорю.Извините за уродливый вид, я просто использую образцы для проверки.

enter image description here

Правильно, видите ли 40px черного пространства внизу?

Я создаю красный вид, выполняя что-то вроде этого:*

CGRect b = self.view.bounds;
b.origin.y += TAB_HEIGHT; //40px
b.size.height -= TAB_HEIGHT;

Затем я создаю вид с этим кадром.

Однако, как только я пытаюсь добавить маски автоматического изменения размера на красный вид, он теряет нижние 40 пикселей и просто заполняет весь вид.Для тех, кто не знаком с TwUI, пример маски авторазмера выглядит следующим образом:

view.autoresizingMask = TUIViewAutoresizingFlexibleHeight;

Итак, маски авторазмера меняются после своих аналогов в iOS.Однако, установка этой маски делает это:

enter image description here

Итак, мой вопрос, как я могу сохранить поле в нижней части этого представления?

1 Ответ

1 голос
/ 11 июля 2011

@ Роб, у меня нет проблем с автоматическим изменением размера.

Следующий код был тем, что я модифицировал пустой проект с магистралью TwUI github.

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application
    TUINSView *content = [[TUINSView alloc] initWithFrame:CGRectZero];
    CGRect b = [window frame];
    b.origin = CGPointZero;
    content.frame = b;

    [window setContentView:content];
    TUIView *viewA = [[TUIView alloc] initWithFrame:CGRectZero];
    viewA.frame = content.bounds;
    viewA.backgroundColor = [TUIColor blackColor];
    [content setRootView:viewA];
    viewA.autoresizingMask = TUIViewAutoresizingFlexibleSize;
    TUIView *viewB = [[TUIView alloc] initWithFrame:CGRectZero];
    viewB.backgroundColor = [TUIColor redColor];
    b = viewA.bounds;
    b.origin.y+=30;
    b.size.height-=30;
    viewB.frame = b;
    [viewA addSubview:viewB];
    viewB.autoresizingMask = TUIViewAutoresizingFlexibleSize;
}

РЕДАКТИРОВАТЬ: я кодировал свой TUIViewController'sloadView вот так, пока все работает хорошо.

- loadView {
    TUIView *v = [[TUIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    tableView = [[TUITableView alloc] initWithFrame:v.bounds style:TUITableViewStylePlain];
    [tableView scrollToTopAnimated:NO];
    tableView.autoresizingMask = TUIViewAutoresizingFlexibleSize;
    document = [[BBSDocDocument alloc] init];
    tableView.delegate = self;
    tableView.dataSource = self;
    CGRect rect = [v bounds];
    [v addSubview:tableView];
    [self setView:v];
}

РЕДАКТИРОВАТЬ 2: Мой код с подклассом TUIViewController:

//TestVC.h:

#import <Foundation/Foundation.h>
#import "TUIKit.h"

@interface TestVC : TUIViewController {
@private
    TUIView *viewA;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;
@end


//TestVC.m
@implementation TestVC

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nil bundle:nil];
    if (self) {
        // Initialization code here.
    }

    return self;
}

- (void)loadView {
    self.view = [[[TUIView alloc] initWithFrame:CGRectZero] autorelease];
    self.view.autoresizingMask = TUIViewAutoresizingFlexibleSize;
}


//application delegate:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application
    TUINSView *content = [[TUINSView alloc] initWithFrame:CGRectZero];
    CGRect b = [window frame];
    b.origin = CGPointZero;
    content.frame = b;

    [window setContentView:content];
    TUIView *viewA = [[TUIView alloc] initWithFrame:CGRectZero];
    viewA.frame = content.bounds;
    viewA.backgroundColor = [TUIColor blackColor];
    [content setRootView:viewA];
    [viewA setAutoresizingMask:TUIViewAutoresizingFlexibleSize];
    TUIView *viewB = [[TUIView alloc] initWithFrame:CGRectZero];
    viewB.backgroundColor = [TUIColor redColor];
    b = viewA.bounds;
    b.origin.y+=30;
    b.size.height-=30;
    viewB.frame = b;
    [viewA addSubview:viewB];
    viewB.autoresizingMask = TUIViewAutoresizingFlexibleSize;
    TestVC *testVC = [[TestVC alloc] initWithNibName:nil bundle:nil];
    testVC.view.frame = viewB.bounds;
    testVC.view.backgroundColor = [TUIColor yellowColor];
    [viewB addSubview:testVC.view];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...