将UIView设置在屏幕iOS右边缘的固定比例位置

时间:2015-04-01 12:27:13

标签: ios objective-c uiview

说,我有一个UIImageView或任何对象,我将其设置为UIView作为subView,CGRectMake,如下所示:

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 30)];

UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake(266, 0, 30, 30)];
    [imgView setImage:[UIImage imageNamed:[self.imageDicKey objectAtIndex:section]]];
    [headerView addSubview:imgView];

在这里,我将imgView的位置设置为CGRectMake(266, 0, 30, 30)];,并将其计算在左侧x position(即266)的位置。如果我想从屏幕右侧设置imgView的位置怎么办?因此,在不同宽度的iPhone屏幕上,它以相同的比例位置显示。但是从右边缘算起它的位置。 非常感谢先进。

2 个答案:

答案 0 :(得分:2)

我建议不要硬编码确切的位置,而是计算x和y。这样它将有助于不同大小的屏幕,因此它不是一个确切的位置,而是基于视图的大小。

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 30)];

CGFloat padding = 20;   // amount for padding
CGSize size = CGSizeMake(30, 30);   // size of imageView
CGPoint startPos = CGPointMake(headerView.frame.size.width - padding - size.width, 0);  // starting position for imageView

UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake(startPos.x, startPos.y, size.width, size.height)]; [imgView setImage:[UIImage imageNamed:[self.imageDicKey objectAtIndex:section]]]; [headerView addSubview:imgView];

答案 1 :(得分:0)

好吧,由于ImageView的宽度为30,x坐标距左侧为266,因此从右侧296开始x坐标。