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を追加しようと、それが下の画像のようにマスクを自動サイズだし、それが完璧に動作しています。
は、私は上の画像と同じ自動サイズ変更をしたいとき、私は次のコードとして、プログラムでそれを行うだろうと思ったが、それは私に同じ結果を与えるものではありません。代わりに、それは上から約2/3に位置しています。これは、self.chatTextView
のy位置をタブバーのすぐ上にある327に設定すると奇妙に見えます。
ビューを縦と横の両方向でタブバーの上に配置するには、どのように自動サイズ調整マスクを設定する必要がありますか?
編集:私はUIViewAutoresizingMaskFlexibleBottomMargin
代わりのUIViewAutoresizingMaskFlexibleTopMargin
を含めるように自動サイズ変更マスクを変更した場合
、ビューには、ポートレートモードでタブバーの上に整列されますが、ランドスケープモードでは、画面の外に出ています。