0

左から右に水平にスクロールする UIScrollView があります。

iPhone の画面サイズに応じて、UIScrollView を Y 軸に垂直に配置できるようにしたいと考えています。たとえば、iPhone 4 と iPhone 5。

CGFloat startX = (70.0f * ((float)[_attachments count] - 1.0f) + padding);
CGFloat startY = 295;
CGFloat width = 64;
CGFloat height = 64; 

現在、Y 位置を 295 から開始しています。これは、iPhone 4 では問題なく機能しますが、iPhone 5 では機能しません。

異なる画面サイズで同じ位置に対応するように startY を変更するにはどうすればよいですか?

ここに画像の説明を入力

4

3 に答える 3

2
CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 568)
{
     //iphone5
}
else
{
     //iphone4
}

それに応じてy値を設定できます

于 2013-01-28T09:35:37.743 に答える
0

あなたの見解で使用layoutSubviewsしてください...

- (void)layoutSubviews {
  CGRect frame = self.bounds;
  frame.origin.y += frame.size.height - _scrollView.frame.size.height;
  if ( ! CGRectEqualToRect( _scrollView.frame, frame ) {
    _scrollView.frame = frame;
  }
}

...私はあなたの水平スクロールビューが_scrollViewivarにあり、また_scrollView.frame.size.heightあなたのの正しい高さが含まれていると仮定します_scrollView。そうでない場合は、身長_scrollView.frame.size.heightを含む定数に置き換えてください。UIScrollView

なぜ状態がCGRectEqualToRect?頻繁に呼び出すことlayoutSubviewsができ、それに新しいフレームを設定すると(等しい場合でも)、UIScrollViewスクロールを停止できます。

于 2013-01-28T09:13:46.990 に答える
0

あなたはこのようにすることができます-

最初に画面の幅と高さを取得します

CGRect screenBounds = [UIScreen mainScreen].bounds ;
CGFloat width = CGRectGetWidth(screenBounds);
CGFloat height = CGRectGetHeight(screenBounds)  ;

いくつかの計算を行い、int を返すメソッドを作成します。

-(NSInteger) getwidth:-(NSInteger *) value
{
int temp = (value * 100) / 480;
return int((height * temp) / 100);
}

-(NSInteger) getheight:-(NSInteger *) value
{
 var temp = (value * 100) / 320;
return int((width * temp) / 100);
}

これらの関数に従ってビューの境界を設定します

actind.frame=CGRectMake(getWidth(20),getheight(20),16,16);

これはすべてのデバイスで機能し、ビューは画面の幅と高さに応じて配置されます。

これがあなたに役立つことを願っています。:)

于 2013-01-28T09:15:31.527 に答える