gpt4 book ai didi

objective-c - UILabel 有最大高度吗?

转载 作者:搜寻专家 更新时间:2023-10-30 19:49:39 24 4
gpt4 key购买 nike

没有太多代码可以分享,只是一个问题。如果标签的高度超过 8191 像素,为什么我的标签不可见?

您可能认为这太过分了,为什么我要这么长的标签……它是动态的,所以您永远不会知道。

事情是这样的:我创建了我的 UIScrollView 并开始在 init 中添加标签,其中有 5 个。我设置了文本,一切顺利。我有一个方法可以获取 5 个标签,使用 NSString sizeWithFont:constrainedToSize:lineBreakMode: 获取大小,重新排列它们并重置 UIScrollView 的 contentHeight。都好。问题是,当标签的高度恰好超过 8191 像素(宽度超过 300)时,它就会消失,不可见,噗!走了。

如果我不能让它工作,我想我可以将文本分成多部分并创建额外的 UILabel,但我想避免这种情况。

有什么想法吗?

这是一些伪代码,很容易理解

NSError *er = nil;
// this file can be found here:
// https://gist.github.com/3167635
NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"lorem.txt"];
NSString *labelText = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&er];
if(er != nil)
NSLog(@"Error: %@", er);

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame: self.view.bounds];
[scrollView setBackgroundColor:[UIColor whiteColor]];

UILabel *label = [[UILabel alloc] init];
[label setBackgroundColor:[UIColor whiteColor]];
[label setNumberOfLines:0];
[label setText:labelText];


CGSize size = [labelText sizeWithFont:label.font constrainedToSize:CGSizeMake(300, CGFLOAT_MAX) lineBreakMode:UILineBreakModeCharacterWrap];

NSLog(@"Size: %@", NSStringFromCGSize(size));
CGRect labelFrame;
labelFrame.origin = CGPointMake(10, 0);
labelFrame.size = size;

[label setFrame:labelFrame];
[scrollView setContentSize:size];
[scrollView addSubview:label];

[[self view] addSubview:scrollView];

虚拟文本很大,使标签不可见。

最佳答案

我建议使用 sizeToFit 属性而不是自己设置高度因为此属性将根据您的文本设置标签的高度,您不必费力设置高度

或者你可以改用这一行

CGSize maximumLabelSize = CGSizeMake(headerView.frame.size.height,over 8191 );

关于objective-c - UILabel 有最大高度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11623317/

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