以编程方式创建不同屏幕大小的对象

时间:2014-12-01 09:54:03

标签: ios objective-c iphone xcode screen-orientation

我正在使用以下代码创建按钮 现在,按钮的位置无法与不同的设备正确对齐或缩放。

我在iPhone 6屏幕尺寸下编写了以下代码。

UIButton *but= [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [but addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
        [but setFrame:CGRectMake(605, 320, 35, 35)];
        [but setTitle:@"Login" forState:UIControlStateNormal];
        [but setExclusiveTouch:YES];
        [self.view addSubview:but];

如果我想拥有iPhone 6 plus与iPhone 6相同的位置。我该怎么办?

非常感谢。

2 个答案:

答案 0 :(得分:1)

使用CGFloat screenScale = [[UIScreen mainScreen] scale];。现在,screenScale可用于确定它是否是视网膜显示器,即当前设备规模。

获取屏幕的当前界限:CGRect screenBounds = [[UIScreen mainScreen] bounds];

要获取设备的当前像素表示,请使用CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale); 在此之后,这是一个使用相对定位的问题,而不是你现在使用的绝对定位。也就是说,使用当前可见的所有元素来确定按钮的实际位置。例如CGFloat yPos = (screenSize.height-20)。 yPos现在将相对于屏幕底部,在所有设备上减去20像素。

我的建议是使用自动布局。在那里,您可以创建相对的约束(或者如果您想要那么创建绝对约束,但它会消除自动布局的目的)。网上有非常好的导游,只需短暂的谷歌搜索。

答案 1 :(得分:1)

  

您也可以将autoresizing mask设置为UIButtonCheck this link。您需要为左边距,高度和设置自动调整遮罩   UIButton的宽度