BoardViewController (UIViewController)があり、その背景に中心座標線を描画する必要があります。これらの座標線のために、subView として追加されるカスタム UIView クラスCoordinateViewを作成しました。デバイスの向きを変更しても、coordinateView は中央に配置され、画面全体に表示される必要があります。
これを行うには、コードで実装された自動レイアウトを使用したいと思います。これが私の現在の設定です:
CoordinatesView (UIView) クラスでは、座標線のカスタム描画メソッド
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextSetLineWidth(context, 1.0);
CGContextMoveToPoint(context, self.bounds.size.width/2,0);
CGContextAddLineToPoint(context, self.bounds.size.width/2,self.bounds.size.height);
CGContextStrokePath(context);
CGContextMoveToPoint(context, 0,self.bounds.size.height/2);
CGContextAddLineToPoint(context, self.bounds.size.width,self.bounds.size.height/2);
CGContextStrokePath(context);
}
BoardViewControllerでこの座標ビューオブジェクトを初期化する
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
...
coordinatesView = [[CoordinatesView alloc]initWithFrame:self.view.frame];
[coordinatesView setBackgroundColor:[UIColor redColor]];
[coordinatesView clipsToBounds];
[coordinatesView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:coordinatesView];
[self.view sendSubviewToBack:coordinatesView];
...
}
BoardViewController のviewWillAppear関数で、coordinateView に自動レイアウトマジックを追加する
-(void)viewWillAppear:(BOOL)animated{
...
NSLayoutConstraint *constraintCoordinatesCenterX =[NSLayoutConstraint
constraintWithItem:self.view
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:coordinatesView
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:1];
NSLayoutConstraint *constraintCoordinatesCenterY =[NSLayoutConstraint
constraintWithItem:self.view
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:coordinatesView
attribute:NSLayoutAttributeCenterY
multiplier:1.0
constant:1];
[self.view addConstraint: constraintCoordinatesCenterX];
[self.view addConstraint: constraintCoordinatesCenterY];
...
}
注: このアプローチは、UIImageView 画像を座標として使用して機能しましたが、カスタム UIView 座標ビューでは機能しません。
再び機能させるにはどうすればよいですか?Auto Layout/NSLayoutConstraint を適用するとすぐに、coordinatesView UIView が消えたようです
これは実際に UIViewController に背景描画を追加する良い方法ですか、それとも UIViewController に直接描画する方が良いですか? (もしそうなら、それはどのように見えますか?)
ご協力いただきありがとうございます。