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 回答