2011-10-18 9 views
0

私はポートレートとランドスケープの2つのビューを取得しています。私はプログラム的にラベルを作成し、パラメータ渡しで呼び出しています。横表示でラベルの位置を変更したいので、2つのviews.Insteadを取っていますので、私はSingleViewでしたいですビュー内でラベルの位置をポートレートからランドスケープに設定する方法

ビュー私は1つだけのビューを持って、肖像画と風景に応じてラベルの位置を設定したい。

私は、1つのビューしか持たず、view.pleaseに従ってtextLabelの位置を変更する方法を教えてください。サンプルコードを教えてください。あなたのコード内

現時点では、私は以下のコードを使用しています

[self.portraitView addSubview:[self createLabel:CGRectMake(450,140,60,20):@"Ratings:"]];  
[self.landscapeView addSubview:[self createLabel:CGRectMake(600,140,60,20):@"Ratings:"]]; 

-(UILabel*)createLabel:(CGRect)frame :(NSString*)labelTitle { 
    UILabel *myLabel = [[UILabel alloc] initWithFrame:frame]; 
    [UIFont fontWithName:@"Arial" size:13]; 
    myLabel.text = labelTitle;  
} 

答えて

0
  1. UILabel * myLabelを.hファイルで宣言してクラス変数にします。
  2. 正しいデバイスの向きに基づいて、viewControllerのviewDidLoadメソッドでcreateLabelメソッドを呼び出します。

は - (ボイド)この方法でフレームをリセット

{ 
     UIDeviceOrientation orientation = [UIDevice currentDevice].orientation 

if(orientation == UIDeviceOrientationPortrait) 
      CGRect frame = CGRectMake(450,140,60,20); 
else 
      CGRect frame = CGRectMake(600,140,60,20); 

     myLabel = [[UILabel alloc] initWithFrame:frame]; 
     [UIFont fontWithName:@"Arial" size:13]; 
     myLabel.text = labelTitle;  
} 
  1. をのviewDidLoad

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{ 
    if(interfaceOrientation == UIInterfaceOrientationLandScape) 
      {  
       mylabel.frame = CGRectMake(600,140,60,20); //your landscape frame 
       mylabel.text = @"Ratings:"; 
      } 
    else 
     { 
      mylabel.frame = CGRectMake(450,140,60,20); // your portrait frame 
      mylabel.text = @"Ratings:"; 
     } 
} 

あなたに〜する必要がありますこの方法で可能なすべての方向をカバーするために少し掘り下げてください。

乾杯!

+0

if文後にワットコードを追加する必要がありますか?私にサンプルコードを与えてください – crazy2431

+0

問題が解決したら回答を受け入れ、問題が解決しない場合はコメントを更新してください。 – SayeedHussain

+0

ur応答のおかげで...しかし、使用されていない可変フレームとLableTitleの宣言されていない...また、私のコードで渡すパラメータを使用しています..私のビューで多くのLableテキストを作成する必要がある...私は多くの他のテキストが手動で作成されるようにパラメータを渡します。 – crazy2431

0

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
if(interfaceOrientation == UIInterfaceOrientationLandScape) 
//set label frame here 
} 
+0

[self.view addSubview:[self createLabel:CGRectMake(650,170,60,20):@ "レビュー:"]];私はここに上記のコードを配置する必要がありますか?また、値を返す警告を与える...上記のコードが正しいか、私はちょうどフレームを設定しますか? – crazy2431

0

と呼ばれる方法は、あなたのViewControllerで、次の2つのメソッドを実装があります。 willRotateToInterfaceOrientation:duration:方法において

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 

、ラベルインスタンスに必要なフレームを設定します。

+0

ここで私は次のコード[自己を追加します。addSubviewを表示します。[self createLabel:CGRectMake(650,140,​​60,20):@ "Ratings:"]]; – crazy2431

+0

UILabelのクラスメンバーを作ってください。そのインスタンスを割り当てて、サブビューとしてメインビューに追加します。回転するときに、フレームをUILabelインスタンスに設定するだけです。 – Ilanchezhian

+0

実際には、単一のLAble Textを作成したくありません。私のアプリケーションでは、別のフレーム位置に10個のラベルテキストを作成します。上記のコードを渡すパラメータを使用していますが、UILabelのクラスメンバーを作成する必要があるのはなぜですか? – crazy2431

0

UILabelのスーパービューのlayoutSubviewsメソッドでラベルフレームを設定し、スーパービューの境界またはインターフェイスの向きをチェックして、ラベルの適切なフレームを決定する必要があります。 UILabelautoresizingMaskも正しく使用すると、アニメーションがうまくアニメーション表示されます。

また、なぜ2つのビューを使用しますか? 1つに異なるレイアウトを適用するのではなく、

+0

私はiphone newに慣れているのでサンプルコードを持っていますか? – crazy2431

関連する問題