- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
所以我的 rootViewController 包含一个带有自定义 UICollectionViewCell 的 UICollectionView。我在单元格上有一个 header 的标签,该标签永远不会更改,并且我有一个多行标签构成了单元格其余部分的主体。当我启动应用程序时,它会正确调用 sizeToFit 并顶部对齐所有内容,因此它不会居中。我单击其中一个单元格并转到下一个 View ,然后如果我单击后退按钮返回到 rootViewController,它会运行 viewWillAppear 方法并重新加载数据,但 sizeToFit 不起作用,并且多行上的所有内容标签居中对齐。它仍然是多行,但如果只有几行,它位于标签的中心,看起来不太好。我怎样才能保持这个,所以它是一致的。我有一个左侧菜单,它将重新加载 rootViewController,它将再次正确定位标签,但是一旦我从 secondViewController 按下后退按钮,它就不再对齐。有没有办法让它清除所有单元格并重新加载它们。我试过 [collectionView reloadData];在 viewWillAppear 中,它不起作用,当前在 connectionDidFinish 的末尾调用它,网络连接是从 viewWillAppear 方法调用的。感谢您提供任何帮助。
这是自定义的 UICollectionViewCell 代码
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
}
return self;
}
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
[contentLabel setNumberOfLines:0];
[contentLabel sizeToFit];
}
Root View Controller
-(UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:
(NSIndexPath *)indexPath
{
NSString *cellIdentifier = @"LocationListCell";
LocationList *cell = [cv dequeueReusableCellWithReuseIdentifier:cellIdentifier
forIndexPath:indexPath];
[cell.titleBar setText:[value objectAtIndex:indexPath.row]];
NSArray *tempObject = [[NSArray alloc] initWithArray:[self getData:[key
objectAtIndex:indexPath.row]]];
NSMutableString *tempString = [[NSMutableString alloc] init];
for (int i = 0; i < [tempObject count]; i++)
{
[tempString appendString:[tempObject objectAtIndex:i]];
[tempString appendString:@"\r"];
}
//[cell.contentLabel sizeToFit];
//[cell.contentLabel setNumberOfLines:0];
[cell.contentLabel setText:tempString];
return cell;
}
最佳答案
将此动态 UILable
与此自定义方法一起使用...
只需在您的.m
文件中添加下面的方法
-(float) calculateHeightOfTextFromWidth:(NSString*) text: (UIFont*)withFont: (float)width :(UILineBreakMode)lineBreakMode
{
[text retain];
[withFont retain];
CGSize suggestedSize = [text sizeWithFont:withFont constrainedToSize:CGSizeMake(width, FLT_MAX) lineBreakMode:lineBreakMode];
[text release];
[withFont release];
return suggestedSize.height;
}
并像下面那样使用它..
UILabel *yourLable = [[UILabel alloc]init];
[yourLable setFrame:CGRectMake(110, 31, 200, 50)];
[yourLable setText:tempString];
yourLable.lineBreakMode = UILineBreakModeWordWrap;
yourLable.numberOfLines = 0;
yourLable.font = [UIFont fontWithName:@"Helvetica" size:12];
yourLable.frame = CGRectMake(yourLable.frame.origin.x, yourLable.frame.origin.y,
200,[self calculateHeightOfTextFromWidth:yourLable.text :yourLable.font :200 :UILineBreakModeWordWrap] );
yourLable.textColor = [UIColor darkGrayColor];
cell.contentLabel = yourLable;
希望这对你有帮助...
关于iphone - 当按下后退按钮返回到 rootViewController 时,UILabel sizeToFit 未保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13964918/
我正在开发一个主视图填满整个屏幕的应用程序。这个主视图包含您可以认为是 Sprite 的 subview 。他们使用自己的代码四处游荡。他们四处游荡的逻辑可能会让他们游荡在屏幕之外。我想要做的是调整主
我刚刚遇到了奇怪的问题,我有一个具有动态高度的自定义表格 View 单元格。虽然测试这一切似乎工作正常,但现在我将真实内容加载到其中似乎存在一些问题。 某些文本似乎不会触发 UILabel 中的新行
我有一个应用程序,用户可以随意添加我所说的调色板。项目 (UIViews) 可以从一个调色板拖动到另一个调色板。我以为我可以使用 sizeToFit 方法在添加项目或删除项目时自动调整调色板的大小,但
我正在为 Storyboard View 创建这些标签。我将自动布局设置为“关闭”,并将行数设置为 0,但仅当我注释掉 sizeToFit 时才会显示文本。当然,当文本高度大于 40 时,文本就会被截
我的 ASTextNod 通常需要 3 行,但我从第二行截断了它。结果:我的 ASTextNod 显示 2 行和 3 个截断点,但他的高度是 3 行的高度而不是 2。 我正在寻找类似于 ASTextN
我有一个观点: label1 和label2 之间存在布局约束。按下按钮将 TextView 中的文本添加到 label1。在调整标签 1 的大小以适合文本后(调用 sizeToFit)。调整大小后,
我正在尝试以编程方式操作 UILabel 以使其具有动态宽度。 我发现使用 sizeToFit() 确实可以做到这一点。现在这个标签变成了我的 navigationItem.titleView。我希望
每当后端数据库发生变化时,我都会执行一段代码。本质上,我在父 View 中有一个标签。标签由许多状态消息之一更新,每个状态消息都在不同的行上,以新行 (\n) 结尾。每条状态消息只需要在一行上并且不能
我有时会看到类似这样的代码: NSArray *segmentedControl = [NSArray arrayWithObjects:@"First", @"Second", @"Third",
我有一个自定义的 UITableViewCell,在 Storyboard 上有一个 UILabel。我动态设置此 UILabel 的文本,并且需要相应地调整 UILabel 的宽度,因为在它之后我还
我在 NSTextField 上的 sizeToFit 方法上遇到了一个奇怪的问题。 我有一个 NSView,我正在其中创建一个 CALayer 和一个 NSTextField。我使用 sizeToF
是否有任何简单的方法可以帮助我使用内容大小动态更改依赖 View 的位置? 我想在列中显示多个 View ,这些 View 都有不同的内容。我希望它们被一个接一个地放置(我已经使用如下所示的约束创建了
所以我正在使用 iOS 6 制作一个应用程序,并且想知道为什么我的代码曾经在 iOS 5 上运行良好,但现在不再运行了。我有一个带有动态 UILabel 的单元格,它会根据它所携带的文本进行调整。 这
这是我的代码: let button_video = UIButton(type: .custom) button_video.frame = CGRect.zero if subsession.Vi
属性文本设置为 UILabel。 let label = UILabel() label.frame = view.frame label.numberOfLines = 0 do { let
我以编程方式创建标签。它总是有两条线。不过,这两行的字体大小会改变。因此,标签的高度和宽度必须改变。我尝试使用 sizeToFit 来做到这一点。然而,第二个词(“Day”)仅部分显示。这个词的底部被
我想在指定行数后以编程方式创建一个 UILabel。我正在使用 swift 。我有以下代码: let newLabel = UILabel() newLabel.text = "Hello There
我已经配置了一个测试 Playground ,其中包含 UITableView 和 UIStackView 实例作为其 header 。 stackView 包含 10 个 UILabel。 问题是,
任何人都能够突出显示为什么在下面的代码中需要“[aLabel sizeToFit]”行,摘自 here . 也就是说,创建的 CGRect 已经根据文本字体大小调整了大小,那么为什么还需要 sizeT
我正在尝试使用函数 sizeToFit。它在整个应用程序中完美运行,但在下面的代码中不起作用。此外,如果无法按照我的方式完成,请提出建议。 self.label = [[UIL
我是一名优秀的程序员,十分优秀!