相关疑难解决方法(0)

根据文字调整UILabel高度

考虑我在UILabel(动态文本的长行)中有以下文本:

由于外星军队的数量远远超过了团队,因此玩家必须利用后世界末日的世界,例如在垃圾箱,支柱,汽车,瓦砾和其他物体后面寻找掩护.

我想调整UILabel's高度,以便文本可以适应.我正在使用以下属性UILabel来使文本包装.

myUILabel.lineBreakMode = UILineBreakModeWordWrap;
myUILabel.numberOfLines = 0;
Run Code Online (Sandbox Code Playgroud)

如果我没有朝着正确的方向前进,请告诉我.谢谢.

cocoa-touch uikit uilabel ios

310
推荐指数
12
解决办法
26万
查看次数

如何使用autolayout设置tableHeaderView(UITableView)的高度?

在过去的3到4个小时里,我一直把头撞在墙上,我似乎无法弄明白.我有一个UIViewController,里面有一个全屏UITableView(屏幕上有一些其他的东西,这就是为什么我不能使用UITableViewController)我想让我的tableHeaderView用autolayout调整大小.不用说,它不合作.

见下面的截图.

在此输入图像描述

因为overviewLabel(例如"此处列出概述信息."文本)具有动态内容,所以我使用autolayout来调整它的大小和它的超级视图.除了tableHeaderView之外,我已经很好地调整了所有内容,它位于层次结构中的Paralax Table View之下.

我发现调整标题视图大小的唯一方法是以编程方式,使用以下代码:

CGRect headerFrame = self.headerView.frame;
headerFrame.size.height = headerFrameHeight;
self.headerView.frame = headerFrame;
[self.listTableView setTableHeaderView:self.headerView];
Run Code Online (Sandbox Code Playgroud)

在这种情况下,headerFrameHeight是tableViewHeader高度的手动计算,如下所示(innerHeaderView是白色区域,或者第二个"View",headerView是tableHeaderView):

CGFloat startingY = self.innerHeaderView.frame.origin.y + self.overviewLabel.frame.origin.y;
CGRect overviewSize = [self.overviewLabel.text
                       boundingRectWithSize:CGSizeMake(290.f, CGFLOAT_MAX)
                       options:NSStringDrawingUsesLineFragmentOrigin
                       attributes:@{NSFontAttributeName: self.overviewLabel.font}
                       context:nil];
CGFloat overviewHeight = overviewSize.size.height;
CGFloat overviewPadding = ([self.overviewLabel.text length] > 0) ? 10 : 0; // If there's no overviewText, eliminate the padding in the overall height.
CGFloat headerFrameHeight = ceilf(startingY + overviewHeight + overviewPadding + 21.f + 10.f);
Run Code Online (Sandbox Code Playgroud)

手动计算有效,但如果将来发生变化,它会很笨拙并容易出错.我想要做的是让tableHeaderView根据提供的约束自动调整大小,就像你可以在其他地方一样.但对于我的生活,我无法弄明白.

关于这个问题有几个关于此的帖子,但没有一个是明确的,最后让我更加困惑.这里有几个:

uitableview ios autolayout ios7

83
推荐指数
4
解决办法
6万
查看次数

iOS AutoLayout多线UILabel

以下问题是这个问题的延续:

iOS:自动布局中的多行UILabel

主要思想是每个视图都应该声明它是"首选"(内在)大小,以便AutoLayout可以知道如何正确显示它.UILabel只是一个视图无法知道显示所需大小的情况的示例.这取决于提供的宽度.

正如mwhuss指出的那样,setPreferredMaxLayoutWidth实现了使标签跨越多行的技巧.但这不是主要问题.问题是我在何时何地获得此宽度值作为参数发送到setPreferredMaxLayoutWidth.

我设法制作看似合法的东西,所以如果我错了,请纠正我,如果你知道更好的方法,请告诉我.

在UIView的

-(CGSize) intrinsicContentSize
Run Code Online (Sandbox Code Playgroud)

setPreferredMaxLayoutWidth根据self.frame.width我UILabels.

UIViewController的

-(void) viewDidLayoutSubviews
Run Code Online (Sandbox Code Playgroud)

是我知道的第一个回调方法,主视图的子视图是用它们在屏幕上居住的确切帧来指定的.然后,从该方法I内部操作我的子视图,使其内在大小无效,以便UILabel根据指定给他们的宽度分成多行.

uilabel ios autolayout

59
推荐指数
4
解决办法
5万
查看次数

具有多个标签的自定型单元格不显示多行标签

我的静态表视图单元格中有三个标签,中间标签应该是多行标签.

我正在设置这两行 viewDidLoad()

self.tableView.estimatedRowHeight = 130.0
self.tableView.rowHeight = UITableViewAutomaticDimension
Run Code Online (Sandbox Code Playgroud)

故事板看起来像这样

在此输入图像描述

以下是每个子视图的约束

顶部标签,中间标签,底部标签,按钮

在此输入图像描述

我还将中间标签的行数设置为0.但是它只显示一行而不是多行.我想它必须与内容拥抱或内容压缩优先级有关,或者因为我正在使用UITableViewController静态单元格.

UPDATE

如果我将中间标签的垂直压缩阻力优先级更改为751并将垂直内容拥抱优先级更改为250,则标签显示多行,但单元格不会调整大小,因此顶部和底部标签现在位于单元格之外.

更新2

我刚刚创建了一个示例项目,事实证明它可以按预期使用动态单元格,但不能使用静态单元格.您可以在此处下载示例项目:https://dl.dropboxusercontent.com/u/67692950/ResizingCell.zip

uitableview ios uistoryboard swift xcode6

9
推荐指数
1
解决办法
2419
查看次数

多线UILabel?

我需要插入到UILabel多行文本.我做以下事情:

NSMutableString * spName = [[NSMutableString alloc ]initWithString:@""];

for (NSUInteger i=0; i<arrEx.count; ++i)
{
    ExInfo * exInf = [arrEx objectAtIndex:i];
    [spName appendString:[MyObject getName:exInf.spNum]];
    [spName appendString:@" "];
    [spName appendString:exInf.totalTime];
    [spName appendString:@"\n"];        
}

CGSize size = [spName sizeWithFont:[UIFont systemFontOfSize:14] 
                 constrainedToSize:constraint
                     lineBreakMode:UILineBreakModeWordWrap];

[cell.exsInfoLabel setFrame:CGRectMake(CELL_CONTENT_MARGIN, top, CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), size.height)];
[cell.exsInfoLabel setText:spName];
[spName release];
Run Code Online (Sandbox Code Playgroud)

arrEx由两个项组成,所以它应该是两个字符串.但是UITableViewCell只包含第一个字符串.在IB中,我将UILabel的行数设置为0 cell.exsInfoLabel.

uikit uilabel ios

6
推荐指数
1
解决办法
1万
查看次数

使用自动布局的iOS消息单元格宽度/高度

目标

我正在尝试使用自动布局创建动态消息单元格.

在此输入图像描述

我试过的

在大多数情况下,单元格正确定位,具有以下约束条件的自动布局:

在此输入图像描述

问题

我的第一个问题是消息标签(可复制标签)宽度受到限制.这似乎可以通过使用此问题中setPreferredMaxLayoutWidth:描述的方法来解决.

身高仍然是个问题.正如您所看到的,消息泡沫仍在切断.另外,我不确定如何确定表视图的消息单元格高度.

我预计自动布局会以某种方式正常工作.我已经在这里阅读了答案,但步骤似乎很多.

问题

首先,自动布局是否比传统的帧算法更复杂?

其次,使用自动布局,如何确定结果单元格的高度?

uitableview ios autolayout

4
推荐指数
1
解决办法
2061
查看次数