6

iPhone アプリ画面の中央に小さなアイコンを追加しようとしています。以下は動作すると思われるコードですが、中央に配置されていません。幅の位置はいいのですが、高さが100pixelくらいズレてる?

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];

助言がありますか?この画面ビューではなく、アプリ ウィンドウ全体のサイズに合わせて配置することはできますか?

4

3 に答える 3

14

である必要がありますself.view.frame.size.height/2 - 18。より簡単な方法は、次のように設定することです。

pinMarkerView.center = self.view.center;

しかし、親ビューが何であるかを知らなければ、imageView を画面の中央に移動する方法を伝えることは不可能です。

于 2013-05-26T23:35:25.560 に答える
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];
于 2013-05-27T07:12:10.857 に答える
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];
于 2014-11-12T06:32:26.653 に答える