相关疑难解决方法(0)

AutoLayout多行UILabel切断了一些文字

我正在尝试学习自动布局,最后我想在发生这种情况时我正在抓住它.我正在玩原型细胞和标签.我想要一个

  • 标题,titleLbl- 图片中的蓝框
  • 金钱,moneyLbl- 图片中的绿色框
  • 字幕/描述,subTitleLbl- 图中的红色框

到目前为止我有这个:

iphone截图

我想要实现的是:

  • 绿色框应始终显示在1行上
  • 绿色框内的值应基于蓝色框居中
  • 蓝色框将占用剩余空间(对于2之间的水平约束为-8px),并在必要时显示在多行上
  • 红色框应位于下方,并根据需要显示尽可能多的行.

正如您所看到的,除了最后一行中的示例之外,这几乎都可以正常工作.我试图对此进行研究,从我可以收集的内容来看,这与内在的内容大小有关.网上有很多帖子推荐设置setPreferredMaxLayoutWidth,我已经在多个地方做了这个titleLbl并且没有任何效果.只有在硬编码时才能180得到结果,但它还在文本顶部/下方的其他蓝色框中添加了空格/填充,大大增加了红色/蓝色框之间的空间.

这是我的约束:

标题: 标题限制

钱: 金钱限制

字幕: 字幕约束

基于我与其他文本样本一起运行的测试,它看起来确实使用了故事板中显示的宽度,但任何纠正它的尝试都不起作用.

我创建了一个单元格的ivar并用它来创建单元格的高度:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    [sizingCellTitleSubMoney.titleLbl setText:[[tableViewData objectAtIndex:indexPath.row] objectForKey:@"title"]];
    [sizingCellTitleSubMoney.subtitleLbl setText:[[tableViewData objectAtIndex:indexPath.row] objectForKey:@"subtitle"]];
    [sizingCellTitleSubMoney.moneyLbl setText:[[tableViewData objectAtIndex:indexPath.row] objectForKey:@"cost"]];

    [sizingCellTitleSubMoney layoutIfNeeded];

    CGSize size = [sizingCellTitleSubMoney.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
    return size.height+1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MATitleSubtitleMoneyTableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifierTitleSubTitleMoney];

    if(!cell)
    {
        cell = [[MATitleSubtitleMoneyTableViewCell alloc] init];
    } …
Run Code Online (Sandbox Code Playgroud)

objective-c uilabel ios uistoryboard autolayout

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

Xcode6,iOS8和(void)layoutSubviews

我有自定义的UILabel,可以在iOS6和iOS7上正常使用.但是在iOS8上,这个标签的(void)layoutSubviews方法永远不会被调用.我用initWithFrame创建了这个标签,所以应该调用这个方法 - 并在另一个iOS版本上调用它.iOS8中的autoLayout系统会发生什么?

uilabel layoutsubviews autolayout xcode6 ios8

7
推荐指数
2
解决办法
2392
查看次数