gpt4 book ai didi

ios - 如何调整文本(字体)的大小以适应 UISegmentedControl 的 UISegment?

转载 作者:可可西里 更新时间:2023-11-01 03:29:01 45 4
gpt4 key购买 nike

有什么方法可以减小适合 UISegmentedControl 单个段的字体大小吗?

尝试过很多东西,比如,

[[UILabel appearanceWhenContainedIn:[UISegmentedControl class], nil] adjustsFontSizeToFitWidth];

[[UILabel appearanceWhenContainedIn:[UISegmentedControl class], nil] setMinimumScaleFactor:0.5];

 NSArray *arr = segment.subviews;  // segment is UISegmentedControl object

for (int i = 0; i < arr.count; i++) {

UIView *aSegment = [arr objectAtIndex:i];

for (UILabel *label in aSegment.subviews) {

if ([label isKindOfClass:[UILabel class]]) {

UILabel *myLabel = (UILabel *)label;

[myLabel setNumberOfLines:0];

label.numberOfLines = 0;
label.adjustsFontSizeToFitWidth = YES;
label.minimumScaleFactor = 0.5;
}



}
}

可以设置segment like的标签行数,

  [[UILabel appearanceWhenContainedIn:[UISegmentedControl class], nil] setNumberOfLines:0];

可以根据内容设置单段大小,如

  segment.apportionsSegmentWidthsByContent = YES;

但在这种情况下,每个段都有不同的大小。

我想保持每个段的大小相同,并希望减小适合 UISegmentedControlUISegmentLabel (label) 的字体大小,例如 minimumscalefactorminimumfontsizeadjustsFontSizeToFitWidth。当包含在 UISegmentedControl 中时,这些属性不适用于标签。

如果有人能帮助实现这一目标,我们将不胜感激!!

提前致谢!!

最佳答案

我发现了问题,原来是我的错!!!我同时设置了 numberOfLines、adjustsFontSizeToFitWidth、minimumScaleFactorTitleTextAttributes。如果我们设置 titleTextAttribute,则 minimumScaleFactor 无法工作。

更新:(@HawkEye1194 在另一个答案的评论中提出)

我最终得到了以下解决方案,

 //this will allow multiple lines in label contained by every segment in segmentedcontroller

[[UILabel appearanceWhenContainedIn:[UISegmentedControl class], nil] setNumberOfLines:0];


UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:option];
segment.frame = CGRectMake(20, 50, self.view.frame.size.width - 40, 50);
segment.tintColor = [UIColor grayColor];
segment.selectedSegmentIndex = 0;
segment.backgroundColor = [UIColor whiteColor];
segment.tag = segmentedControllerBaseTag;


[segment addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged];

[segment setTitleTextAttributes:@{NSFontAttributeName :[UIFont fontWithName:@"HelveticaNeue" size:17.0], NSForegroundColorAttributeName : [UIColor darkGrayColor] } forState:UIControlStateNormal];
[segment setTitleTextAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue" size:17.0],NSForegroundColorAttributeName : [UIColor whiteColor]} forState:UIControlStateSelected];

如果你没有像上面那样设置标题文本属性,那么你可以使用下面的代码

// ********** if titletextattributes are not set then below method works ***********

for(uint i=0;i<[segment subviews].count;i++)
{
for(UIView *view in [[[segment subviews] objectAtIndex:i] subviews])
{
if([view isKindOfClass:[UILabel class]])
{

[(UILabel*)view setNumberOfLines:0];
[(UILabel*)view setAdjustsFontSizeToFitWidth:YES];
[(UILabel*)view setMinimumScaleFactor:0.7];


}
}
}

您可以通过以下代码根据内容调整单个段的大小,

 //*************** adjust single segment size as per content

segment.apportionsSegmentWidthsByContent = YES;

关于ios - 如何调整文本(字体)的大小以适应 UISegmentedControl 的 UISegment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38520242/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com