0

現在、ビュー内に pickerView とタップバーを含むアプリを作成しています。ビューは画面の下部に配置されます。タップバーは常に表示されます。タップバーのボタンをタップすると、ビューが上に移動して pickerView が表示されます。私の問題は:

ビューは iPhone 5 画面の下部まで移動しません。このコードを別の場所に配置しました。

CGSize screenSize = [[UIScreen mainScreen] bounds].size;
if (screenSize.height > 480.0f){
    [UIView beginAnimations:Nil context:Nil];//tells the compiler to start a new animation
    [UIView setAnimationDuration:0.6];//in seconds
    self.hiddenView.frame = CGRectMake(0, 504, 320, 260);//move the picker to a specific position (504 = 568 - statusbar(20) - tapbar(44))
    [UIView commitAnimations];//tells the compiler to start the animations
}

のように:

-(void)viewDidLoad{}
-(void)viedWillAppear{}
-(void)viewDidAppear{}

私は無知です。正しい方法を知っている人はいますか?

UPADTE

すべての回答に感謝しますが、私のアニメーションは正常に動作します。私の問題は、毎回実行される(ブレークポイントを使用してチェックされる)が起動しない(ビューが下に移動しない)ことです。そこで、適切に動作させるためにコードをどこに配置する必要があるかを尋ねました。コードが正しいかどうかではありません。iPhone 5 かどうかを確認してアニメーション化する方法はいくつかあることは知っていますが、繰り返しますが、このコードは機能しており、実際の問題ではありません。私の問題をよりよく理解していただければ幸いです。

4

5 に答える 5

1

どうやら誰も私の質問を正しく理解していなかったようです (または実際に最後まで読んでいませんでしたか?) ので、自分で答えを見つけなければなりませんでした。ここで誰かが同じ問題に遭遇した場合、私はそれをどのように解決したかを示します。

コードを-(void)viewDidLayoutSubviews{}関数に配置するだけです。ビューが完全にロードされるとすぐに実行されます。

   -(void)viewDidLayoutSubviews{
        CGSize screenSize = [[UIScreen mainScreen] bounds].size;
        if (screenSize.height > 480.0f){
            [UIView beginAnimations:Nil context:Nil];//tells the compiler to start a new animation
            [UIView setAnimationDuration:0.0];//in seconds
            self.hiddenView.frame = CGRectMake(0, 504, 320, 260);//move the picker to a specific position
            [UIView commitAnimations];//tells the compiler to start the animations
        }
    }
于 2013-07-03T13:02:52.233 に答える
1

以下のコードを使用してください。

if([[UIScreen mainScreen] bounds].size.height == 568)
{
    //This is for iphone 5 view
    //add your code here.
    UIView *view=[[UIView alloc]initWithFrame:CGRectMake(0, 150, 100, 100)];

}
else
{
    //This is for iphone 4 view
    //add your code here.
    UIView *view=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
}

この状態はiphone 5です。

于 2013-06-26T11:02:13.753 に答える
1

comparision異なる高さにする必要はありませんios:ビューを非表示にするためにこれを試してください:

CGSize screenSize = [[UIScreen mainScreen] bounds].size;
[UIView beginAnimations:Nil context:Nil];//tells the compiler to start a new animation
[UIView setAnimationDuration:0.6];//in seconds
self.hiddenView.frame = CGRectMake(0, screenSize.height, 320, 260);//move the picker to a specific position
[UIView commitAnimations];//tells the compiler to start the animations

ビューを表示するには:

CGSize screenSize = [[UIScreen mainScreen] bounds].size;
    [UIView beginAnimations:Nil context:Nil];//tells the compiler to start a new animation
    [UIView setAnimationDuration:0.6];//in seconds
    self.hiddenView.frame = CGRectMake(0, screenSize.height-260, 320, 260);//move the picker to a specific position
    [UIView commitAnimations];//tells the compiler to start the animations

変数を取得したり、 Likeboolの選択状態を使用したりできるように更新します。tapButton

-(IBAction) tapbuttonClicked:(UIButton *)sender
{
     [sender setSelected:!sender.isSelected];
     if(sender.isSelected)
      {
        //code to show your view...
      }
      else
      {
        //code to hide....
       }
}
于 2013-06-26T11:02:32.167 に答える
0

そのようなことをする私のお気に入りの方法は、+ (UIView) animateWithDuration: animations:

CGSize screenSize = [[UIScreen mainScreen] bounds].size;
if (screenSize.height > 480.0f){
[UIView animateWithDuration:0.60f animations:^(void){
self.hiddenView.frame = CGRectMake(0, 504, 320, 260);//move the picker to a specific position (504 = 568 - statusbar(20) - tapbar(44))
}];
}

これでうまくいくはずです。また、見ることもできanimateWithDuration: animations: completion:ますanimateWithDuration: delay: options: animations: completion:

お役に立てれば。

于 2013-06-26T11:05:35.113 に答える
0

次のコード行を追加します。

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

yourProjectName-perfix.pchファイルで

これは、デバイスが iPhone4 または iPhone5 であることを認識するのに役立ちます。のような条件を与えることによって

if (IS_IPHONE_5)
{
    //// write code/setFrame for iPhone5;
}
eles
{
    //// write code/setFrame for iPhone4;
}

プロジェクトのどこでも使用できます。

于 2013-06-26T11:02:03.157 に答える