我正在尝试使用自定义图标和文本来获取一组按钮(UIButton的子类),以符合图标在文本上方居中的图案,并且两者一起在按钮内水平和垂直居中。
CGSize textSize = [[self titleForState:UIControlStateNormal] sizeWithFont:self.titleLabel.font
forWidth:self.frame.size.width
lineBreakMode:UILineBreakModeWordWrap];
[self setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
[self setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
[self setImageEdgeInsets:UIEdgeInsetsMake(0, 0, textSize.height + 10, 0)];
[self setTitleEdgeInsets:UIEdgeInsetsMake(self.imageView.frame.size.height + 10,
-self.imageView.frame.size.width,
0, 0)];
对于大多数图标/文字组合,这都有效。然而,对于少数人来说,一切都变得不稳定。文本似乎总是保持在中心对齐,但图标往往被推到左边,有时在零(x),有时在零和中心之间。
图标大多数都有不同的尺寸,但都非常适合按钮,并且有足够的空间放置文本。如果我将一个未对齐按钮的文本用于一个很好地对齐的按钮,它将不对齐。如果对齐按钮中的文本带有未对齐按钮的图标,则通常会对齐,但并非总是如此。它似乎是图标大小和文本大小的某种组合,但我看不出它们中的任何一个有什么问题。
是否有更合适的方法来设置这些插图以使其工作?
我一直在调整和玩这个几个小时,我不能为我的生活弄清楚发生了什么。以下是每个按钮的相关框架:
Image: {{24, 35}, {29, 25}}
Title: {{11, 63}, {55, 28}}
inSelf: {{0, 0}, {78, 120}} => Good
Image: {{23, 36}, {32, 23}}
Title: {{5, 62}, {67, 28}}
inSelf: {{0, 0}, {78, 120}} => Good
Image: {{21, 36}, {35, 23}}
Title: {{15, 62}, {48, 28}}
inSelf: {{0, 0}, {78, 120}} => Good
Image: {{6, 35}, {28, 25}}
Title: {{10, 63}, {57, 28}}
inSelf: {{0, 0}, {78, 120}} => Bad
Image: {{0, 38}, {29, 20}}
Title: {{12, 61}, {53, 28}}
inSelf: {{0, 0}, {78, 120}} => Bad