我正在尝试在iPhone应用程序屏幕的中心添加一个小图标。下面是我认为应该起作用的代码,但它并不是它的中心。关于宽度的位置很好,但高度偏离,大约100像素关闭?
UIImage *pinMarker = [UIImage imageNamed:@"red_pen_marker.png"];
UIImageView *pinMarkerView = [[UIImageView alloc] initWithImage:pinMarker];
pinMarkerView.frame = CGRectMake(self.view.frame.size.width/2 - 9, self.view.frame.size.height/2 - 36, 18, 36);
[self.view addSubview:pinMarkerView];
有什么建议吗?也许根据整个应用程序窗口大小放置它而不是这个屏幕视图?
答案 0 :(得分:13)
应该是self.view.frame.size.height/2 - 18
。更简单的方法是将其设置为:
pinMarkerView.center = self.view.center;
但不知道父视图是什么,就不可能告诉如何将imageView带到屏幕中心。
答案 1 :(得分:4)
我认为NSLayoutConstraint应该解决你的问题
UIView *superview = self.view;
UIImage *pinMarker = [UIImage imageNamed:@"red_pen_marker.png"];
UIImageView *pinMarkerView = [[UIImageView alloc] initWithImage:pinMarker];
pinMarkerView.frame = CGRectMake(self.view.frame.size.width/2 - 9, self.view.frame.size.height/2 - 36, 18, 36);
[pinMarkerView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:pinMarkerView];
NSLayoutConstraint *myConstraint =[NSLayoutConstraint
constraintWithItem:pinMarkerView
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:0];
NSLayoutConstraint *myConstraint2 =[NSLayoutConstraint
constraintWithItem:pinMarkerView
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeCenterY
multiplier:1.0
constant:0];
[superview addConstraint:myConstraint];
[superview addConstraint:myConstraint2];
答案 2 :(得分:3)
这是一个解决方案
而不是self.view.frame.size.width
使用:: [UIScreen mainScreen] .bounds.size.width或height
所以代码是
UIImage *pinMarker = [UIImage imageNamed:@"red_pen_marker.png"];
UIImageView *pinMarkerView = [[UIImageView alloc] initWithImage:pinMarker];
pinMarkerView.frame = CGRectMake([UIScreen mainScreen].bounds.size.width / 2, [UIScreen mainScreen].bounds.size.height / 2 , 18, 36);
[self.view addSubview:pinMarkerView];