Wyśrodkuj niestandardowy widok UIView pionowo i poziomo za pomocą układu automatycznego

Próbuję zbudować dość prosty animowany interfejs użytkownika przy użyciu nowo udostępnionego interfejsu API automatycznego układu iOS 6. Widok niestandardowy, który buduję, ma okrąg, który chcę wyśrodkować w pionie i poziomie.

Niestety nie mogę zrozumieć, dlaczego moje ograniczenia wydają się działać poprawnie dla elementów UIButton i UILabel, ale dają dziwne wyniki, gdy używam niestandardowego widoku z niestandardowym CALayer (w tym przypadku kółkiem, które ostatecznie zostanie animowane).

Żeby było jasne, nie chcę, aby mój widok rozszerzał się, aby wypełnić cały ekran, ale aby mieć dynamiczne „dopełnienie”, tak aby widok był pionowo wyśrodkowany zarówno na iPhone 4, jak i 5. Powinienem również zauważyć, że jestem bardzo nowe w Cocoa i UIKit.

RootViewController.m:

...
- (void)viewDidLoad {
    [super viewDidLoad];

    // Create Circle View
    CGRect circle_view_rect = CGRectMake(0, 0, 100, 100);
    UIView *circle_view = [[UIView alloc] initWithFrame:circle_view_rect];

    // Create Circle Layer
    CircleLayer *circle_layer = [[CircleLayer alloc] init];
    circle_layer.needsDisplayOnBoundsChange = YES;
    circle_layer.frame = circle_view.bounds;
    [circle_view.layer addSublayer:circle_layer];

    // Enable Auto Layout
    [circle_view setTranslatesAutoresizingMaskIntoConstraints:NO];

    [self.view addSubview:circle_view];

    // Center Vertically
    NSLayoutConstraint *centerYConstraint =
    [NSLayoutConstraint constraintWithItem:circle_view
                attribute:NSLayoutAttributeCenterY
                relatedBy:NSLayoutRelationEqual
                   toItem:self.view
                attribute:NSLayoutAttributeCenterY
               multiplier:1.0
                 constant:0.0];
    [self.view addConstraint:centerYConstraint];

    // Center Horizontally
    NSLayoutConstraint *centerXConstraint =
    [NSLayoutConstraint constraintWithItem:circle_view
                attribute:NSLayoutAttributeCenterX
                relatedBy:NSLayoutRelationEqual
                   toItem:self.view
                attribute:NSLayoutAttributeCenterX
               multiplier:1.0
                 constant:0.0];
    [self.view addConstraint:centerXConstraint];
}
...

CircleLayer.m:

...
- (void)drawInContext:(CGContextRef)context {
    CGContextAddArc(context, 50, 50, 50, 0.0, 2*M_PI, 0);
    CGContextSetFillColorWithColor(context, [UIColor yellowColor].CGColor);
    CGContextFillPath(context);
}
...

Zasadniczo ograniczenia, które zaimplementowałem to:

wyśrodkuj pionowo wewnątrz widoku rodzicaśrodkowo poziomo wewnątrz widoku rodzica

I to jest wynik, który otrzymuję:

Każda pomoc byłaby bardzo mile widziana, zastanawiałem się nad tym od kilku dni.

Dzięki

questionAnswers(2)

yourAnswerToTheQuestion