2012-01-24 13 views
0

UITabBarの直上に縦と横の両方向に整列させたいUIViewがあります。私はプログラムでこれをやりたいと思います。これは私が私のUIViewのサブクラスを持っているすべてである任意の方向のタブバーの上にUIViewを配置する

IPChatTextView

/* Initialization */ 
- (id)init 
{ 
    if (self = [super init]) 
    { 
     // Set frame 
     self.frame = CGRectMake(0, 0, 320, 40); 

     // Create background 
     UIEdgeInsets insetsBackground = UIEdgeInsetsMake(20, 50, 19, 82); 
     UIImage *imageBackground = [[UIImage imageNamed:@"ChatTextView_Background.png"] resizableImageWithCapInsets:insetsBackground]; 
     UIImageView *imageViewBackground = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 40)]; 
     imageViewBackground.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
     imageViewBackground.image = imageBackground; 

     // Add subviews 
     [self addSubview:imageViewBackground]; 
    } 

    return self; 
} 

画像ビューimageViewBackground全体のUIViewを埋めなければならないので、私はそれがUIViewAutoresizingFlexibleWidthにマスクを自動サイズだ設定されています。これは正常に動作します。

ビューを初期化するときに、私はそれに自動サイズ変更マスクを設定します。

self.chatTextView = [[IPChatTextView alloc] init]; 
self.chatTextView.frame = CGRectMake(0, 327, 320, 40); 
self.chatTextView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; 
[self.view addSubview:self.chatTextView]; 

私は、Interface BuilderでのUIViewを追加しようと、それが下の画像のようにマスクを自動サイズだし、それが完璧に動作しています。

Autoresizing in Interface Builder

は、私は上の画像と同じ自動サイズ変更をしたいとき、私は次のコードとして、プログラムでそれを行うだろうと思ったが、それは私に同じ結果を与えるものではありません。代わりに、それは上から約2/3に位置しています。これは、 self.chatTextViewのy位置をタブバーのすぐ上にある327に設定すると奇妙に見えます。

ビューを縦と横の両方向でタブバーの上に配置するには、どのように自動サイズ調整マスクを設定する必要がありますか?

編集:私はUIViewAutoresizingMaskFlexibleBottomMargin代わりのUIViewAutoresizingMaskFlexibleTopMarginを含めるように自動サイズ変更マスクを変更した場合

、ビューには、ポートレートモードでタブバーの上に整列されますが、ランドスケープモードでは、画面の外に出ています。

答えて

0

ローテーションが検出されたときにプログラムで位置付けが終了しました。

関連する問題