根据Objective C,ios6,Xcode中的屏幕大小定位元素

时间:2013-01-28 08:54:34

标签: iphone objective-c xcode ios6 uiscrollview

我有一个UIScrollView,从左到右水平滚动。

我希望能够根据iPhone的屏幕尺寸在Y轴上垂直放置我的UIScrollView。例如iPhone 4和iPhone 5。

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

现在我在295开始我的Y位置,这对iPhone 4有效,但在iPhone 5上无效。

如何更改startY以适应不同屏幕尺寸的相同位置?

enter image description here

3 个答案:

答案 0 :(得分:2)

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

您可以相应地设置y值

答案 1 :(得分: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;
  }
}

...我假设您的水平滚动视图位于_scrollView ivar中,_scrollView.frame.size.height包含_scrollView的正确高度。如果没有,请将_scrollView.frame.size.height替换为包含UIScrollView高度的常量。

为什么条件为CGRectEqualToRect?因为layoutSubviews可以经常调用,当你设置新框架(即使它等于)时,UIScrollView可以停止滚动。

答案 2 :(得分: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);

这将适用于所有设备,视图将根据屏幕的宽度和高度进行排列。

希望这会对你有所帮助。 :)