2011-07-09 18 views
4

マスクの自動サイズ調整に問題があります。ここでの取り引きは:最近リリースされたTwUIを使用していますが、これはUIKitから多くのものが必要ですが、Mac上にあります。だから私は両方ともiOS & Macのためにタグを付けました。したがって、ウィンドウを垂直方向にどれだけ大きくしても、底部に40ピクセルの余白が必要なビューを作成します。私は、複数の理由から、ウィンドウの水平展開を許可していません。ここで私が話しているもののようなサンプルがあります。醜い外観のため申し訳ありません、私はちょうどテストするためにサンプルビューを使用しています。TwUIの下マージンで自動サイズ調整マスクを調べる?

enter image description here

右浩、その下に黒いスペースの40ピクセルを参照してください?

私はこのような何かを行うことによって、赤のビューを作成しています:

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

これは非常によく、(確かに私にそれのように見える)のバグである可能性があります。 TwUIはまったく新しいものなので、おそらくそれを報告する価値があります。 –

答えて

1

@Rob、私はそれを自動化するのに問題はありません。

次のコードは、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; 
} 

EDIT: 私はそれがとてもうまく、これまでに動作しますが、このように私のTUIViewControllerのloadViewメソッドをコード化されました。

- 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]; 
} 

EDIT 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]; 
} 
+0

このビューは 'TUIViewController'で初期化されていることを忘れてしまいました。通常の 'TUIView'では正常に動作しているようですが、' viewDidLoad'の間にビューに最終的な境界がないため、 'TUIViewController'を使用すると表示が乱れます。 –

+0

View Controllerの '-loadView'をペーストできますか? – ZhangChn

+0

http://pastebin.com/pYEccTRr –

関連する問題