我创建了一个非常简单的自定义平面按钮:
@implementation HAFlatButton
+ (id)buttonWithColor:(UIColor *)aColor
{
id button = [super buttonWithType:UIButtonTypeCustom];
[button setFlatColor:aColor];
CGRect frame = [button frame];
frame.size.height = 200;
[button setFrame:frame];
return button;
}
+ (id)defaultButton
{
return [HAFlatButton buttonWithColor:[HAColors buttonColor]];
}
- (void)setFlatColor:(UIColor *)flatColor
{
_flatColor = flatColor;
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect {
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = UIGraphicsGetCurrentContext();
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:4.0];
CGContextSaveGState(context);
[path addClip];
[_flatColor setFill];
CGContextFillRect(context, rect);
CGColorSpaceRelease(colorSpace);
}
@end
当我使用[HAFlatButton defaultButton]向我的自动布局添加一个按钮时,它只比按钮文本高一点,但是当我在我的布局中添加[UIButton buttonWithType:UIButtonTypeRoundedRect]时,它在标签周围有适当的插图。
我做错了什么?
答案 0 :(得分:1)
您需要执行以下一项或多项操作:
添加高度约束。
覆盖intrinsicSize返回值。
调整垂直内容拥抱优先级。