0

ビューの上部にラベルを配置して中央に配置するのに問題があります。ただし、日付を使用しているため、文字列の幅は異なります。また、3.5インチの画面では、テキストが収まらないことにも気づきました。また、ラベルの両側に2つの画像ボタンがあります。

だから私はマージンを持っている必要があります。

さらに複雑なことに、ビューは横向きでのみ表示されるため、左側が上などになります。

ViewController *nextController = [[ViewController alloc] 
              initWithNibName:@"View" bundle:nil];
CGAffineTransform newTransform = CGAffineTransformMake(0.0,1.0,-1.0,0.0,0.0,0.0);         
nextController.view.transform = newTransform;
nextController.hidesBottomBarWhenPushed = YES;

私がする必要があるのは...

int margin = 50;
lblTitle.frame = CGRectMake(margin, 2, th - (margin * 2), 22);

しかし、それはうまくいきません。左側にステータスバーの高さを追加しているようなものですが、ステータスバーは表示されています。私は何度も試みましたが、何が間違っているのかわかりません。

lblTitle = [[UILabel alloc] initWithFrame:CGRectZero];
lblTitle.text = [NSString stringWithFormat:@"%@ - from %@ to %@", 
                       strChartType, displayStartDate, displayEndDate];

int th = self.view.frame.size.height;
//int th = self.view.bounds.size.height;

lblTitle.frame = CGRectMake(0, 2, th, 22);  // x, y, w, h

//[lblTitle setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | 
           UIViewAutoresizingFlexibleRightMargin];

//lblTitle.center = CGPointMake( self.view.bounds.size.width / 2, 10);

[lblTitle setTextAlignment:UITextAlignmentCenter];
lblTitle.font = [UIFont boldSystemFontOfSize:14];
lblTitle.adjustsFontSizeToFitWidth = FALSE;

lblTitle.backgroundColor = [UIColor yellowColor];

[self.view addSubview:lblTitle];
4

1 に答える 1

0

画面の境界を取得してから、ステータスバーの高さを差し引いて、ラベルの幅を取得できます。

float screenHeight = [UIScreen mainScreen].bounds.size.height;
float statusBarHeight = ([UIApplication sharedApplication].statusBarFrame.size.height < [UIApplication sharedApplication].statusBarFrame.size.width) ? [UIApplication sharedApplication].statusBarFrame.size.height : [UIApplication sharedApplication].statusBarFrame.size.width;
float labelWidth = screenHeight - statusBarHeight;

注:mainScreenの境界は常に縦向きモードで返されるため、向きを気にする必要はありませんが、statusBarFrameは回転できるため、フレームの幅または高さが使用する正しい値であるかどうかを確認する必要があります。

于 2013-02-03T15:55:51.707 に答える