我试图建立一个使用自动布局API新的可用的iOS 6,我建立自定义视图中有我想成为垂直和水平为中心的圆一个相当简单的动画自定义用户界面。
不幸的是我无法弄清楚,为什么我的限制似乎为UIButton的做工精细,和的UILabel元素,但是当我用一个自定义视图和自定义CALayer的(在这种情况下转了一圈,最终将动画)产生奇怪的结果。
需要明确的是,我不希望我的观点扩大到充满整个屏幕,而是具有动态的“填充”,这样的观点是在iPhone 4和5垂直居中两个我也应该注意到,我很新的可可和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);
}
...
基本上,我已经实现了约束:
- 垂直居中父视图内
- 父视图内水平居中
这是结果我得到:
任何帮助将不胜感激,我一直在琢磨,现在这一个了几天。
谢谢