动态 UILabel 大小 iOS 7 问题

2024-03-10

我正在尝试根据文本高度动态调整标签大小。 UILabel 中的高度可以从 0 行到多行不等。我已经为这个问题提出了一个解决方案,该解决方案在 iOS 8 上运行良好,但在 iOS 7.1 上失败,我也试图支持它。

该项目中未使用自动布局,所有约束均以编程方式完成。

代码如下:

//TableDelegate.m

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
  return 85.0f;
}

//自定义TableView Cell.m

-(UILabel *)commentTextLabel
{
  if(!_commentTextLabel)
  {
    _commentTextLabel = [UILabel new];
    _commentTextLabel.numberOfLines = 0;
    _commentTextLabel.translatesAutoresizingMaskIntoConstraints = NO;
  }

  return _commentTextLabel;
}




  -(void)setupViews
    {
      [self.contentView addSubview:self.profilePictureView];
      [self.contentView addSubview:self.userName];
      [self.contentView addSubview:self.timePublishedLabel];
      [self.contentView addSubview:self.commentTextLabel];
      [self.contentView addSubview:self.seeMoreButton];

      self.backgroundColor = [UIColor salooteInputTextBg];
      self.contentView.backgroundColor = [UIColor salooteInputTextBg];

      NSDictionary *views = @
      {
        @"picture"       : self.profilePictureView,
        @"userName"      : self.userName,
        @"timePublished" : self.timePublishedLabel,
        @"text"          : self.commentTextLabel,
        @"seeMore"       : self.seeMoreButton
      };

      [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-5-[picture(38)]-5-[userName]-5-[timePublished]-5-|" options:0 metrics:nil views:views]];
      [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[picture]-5-[text]-5-|" options:0 metrics:nil views:views]];
      [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-5-[seeMore]-5-|" options:0 metrics:nil views:views]];
      [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-5-[userName]-5-[text]-5-[seeMore]-5-|" options:0 metrics:nil views:views]];
      [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-5-[picture(38)]" options:0 metrics:nil views:views]];

    }

  -(void)updateConstraints
  {
      [super updateConstraints];
   }

iOS 8 结果(左) iOS 7.1 结果(右)

enter image description here enter image description here I'm not setting any height constraint in my code for the UILabel but rather trying to let the constraints adjust the vertical height for me. If anyone has some input on how to make this work properly on iOS 7.1 I would really appreciate it.

将约束移至 setupViews 会产生以下效果:(iOS 7.1 顶部 iOS 8 底部)


在我看来你没有添加vertical的限制commentTextLabel?你只有这个:

//Comment text
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[picture]-5-[text]-0-|" options:0 metrics:nil views:views]];

尝试设置一个垂直约束 - 很可能你会遇到约束不足的错误,并且 iOS 8 比 iOS 7 更好地猜测高度。此外,如果你要向视图添加约束,则不必调用sizeToFit吸气剂内。

该项目中未使用自动布局,所有约束均以编程方式完成。

即使您仅以编程方式添加约束,您仍在使用自动布局。 :)


回应编辑

您的垂直高度限制不足 - 您只指定了commentTextLabel但不是它的 y 坐标。请记住,自动布局的主要目标是提供一套完整的约束,以便 iOS 可以计算视图的 x、y、宽度和高度。

我认为你的限制总体上是搞砸了。 :) 尝试将这些规则添加到内容视图中(我只使用 5 作为填充):

H:|-5-[picture(38)]-5-[username]-5-[timePublished]-5-|
H:[picture]-5-[text]-5-|
H:|-5-[seeMore]-5-|
V:|-5-[username]-5-[text]-5-[seeMore]-5-|
V:|-5-[picture(38)]

另外,添加你的约束setupViews--你应该只需要添加一次约束并且只修改它们updateConstraints。我认为updateConstraints每次都会被调用layoutSubviews被调用,以便每次刷新单元格布局时都会添加约束。


回应编辑

您的标签的自动换行样式也必须设置。从里面commentTextLabel, add

_commentTextLabel.lineBreakMode = NSLineBreakByWordWrapping;

始终将其与numberOfLines = 0如果你想要一个具有动态高度的 UILabel。

您还需要通过设置该标签的值来右对齐 seeMore 标签(它占据单元格的整个宽度减去填充)alignment财产。

现在尝试提供一个更大的假高度——也许是 150 或 200,而不是 85,这样我们就可以看到所有元素。

对于 timePublished 标签,我忘记指出以下垂直约束:

V:|-5-[timePublished]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态 UILabel 大小 iOS 7 问题 的相关文章

  • 当表格为空时 iPhone UITableView 图像背景

    我想当我的 UITableView 为空时显示图像背景 目前 我尝试将 UIImageView 添加到包含表格的视图控制器 但 XCode 不允许这样做 有没有好的方法呢 您可以在表视图顶部添加图像视图或更改表视图的背景视图 Check i
  • 使用 NSDateFormatter 和 TimeZone(不带 GMT 时间修饰符)将 NSDate 转换为 NSString

    我正在初始化我的 NSDateFormatter NSDateFormatter dateFormatter NSDateFormatter alloc init autorelease dateFormatter setLocale NS
  • 如何计算CLLocationDistance的中心坐标

    我想计算我的位置和一些注释之间的中心点 到目前为止我已经这样做了 CLLocation myLoc self locMgr location MKPointAnnotation middleAnnotation locationV anno
  • Objective C 宏附加到字符串

    我认为这是一件非常简单的事情 但由于我是 iOS 开发和 Objective C 的新手 所以我无法弄清楚 define RESTFUL PATH PREFIX https gogch com gch restful define LOGI
  • iOS5 和 Facebook API

    我想将我的应用程序与 Facebook 集成并从 github 下载 Facebook ios sdk 但是 该 sdk 适用于 Xcode 4 0 代码库 我正在使用 Xcode 4 2 for iOS 5 beta 5 应用程序 是否有
  • 在两个可移动 uiview 之间画线

    我有一个带有节点的 滚动视图 UIViews 可以拖动 我正在尝试在选定的之间绘制边缘UIViews使用 calayer 但我不知道当视图位置发生变化时如何重新绘制线条 In my viewControllerI 类在节点数组中添加第一个和
  • 双击并滑动/拖动手指以放大/缩小

    如果有人使用过 iOS 版谷歌地图应用程序 那么它有一个很棒的功能 可以用一根手指放大 缩小 双击 uiscrollview 然后立即向上或向下滑动手指以放大 缩小 有谁知道这是如何实现的 谷歌发布了任何片段吗 我将此功能添加到我的 UIS
  • Xcode 中的 NSObject 描述和自定义摘要

    我覆盖对象的 NSString description但是 Xcode 总是显示error summary string parsing error在变量视图的摘要字段中 我当前的实现如下 NSString description retu
  • 带有图像的 UITableView 滚动非常慢[重复]

    这个问题在这里已经有答案了 可能的重复 带图像的表格视图 加载和滚动缓慢 https stackoverflow com questions 4071497 table view with images slow load and scro
  • UIImageWriteToSavedPhotosAlbum 选择器语法问题

    努力让 UIImageWriteToSavedPhotosAlbum 快速工作https developer apple com library ios documentation UIKit Reference UIKitFunction
  • 如何在 iOS 6 中强制 UIViewController 为纵向

    As the ShouldAutorotateToInterfaceOrientation在 iOS 6 中已弃用 我用它来强制特定视图仅肖像 在 iOS 6 中执行此操作的正确方法是什么 这仅适用于我的应用程序的一个区域 所有其他视图都可
  • iOS Twitter NSURLErrorDomain 代码=-1012

    我正在尝试通过在我的应用程序中注册 Twitter 来获取用户的联系方式 我发现this https github com malcommac DMTwitterOAuthgithub上的项目看起来非常好 我只遇到一个问题 如果我使用来自
  • Swift 错误:发出 SIGABRT 信号如何解决

    我只是 Swift 编码的初学者 我的想法很简单 就是一个有两个按钮的应用程序 单击时 文本字段将更改其文本 在 Main StoryBoard 中 我添加一个文本字段和两个按钮 在 ViewController swift 文件中 我这样
  • 如何在多个视图中显示相同的导航栏?

    我可以为一个视图重现以下导航栏 但是 一旦我单击按钮后移至下一个视图 我就会丢失最右边的两个图标 搜索 个人资料 据我所知 从故事板设置导航项目通常是按视图进行的 我可以为每个视图复制这些项目 但我想知道是否有更好的方法来完成一次 是否有教
  • AGVTool new-version 和 What-version 不对应

    当我做 agvtool new version all 99 它更新我的 Info plist 文件 但是 如果我这样做 agvtool what version or agvtool next version 我收到此错误 There d
  • iOS 开发:如何强制 UIWebView 加载 Facebook 的非移动版本?

    我正在深入研究 iOS 开发 当我尝试在 UIWebView 中加载特定的 Facebook 粉丝页面时 它会加载该网站的移动版本 该版本仅加载粉丝页面的墙 而不是我需要加载的特定选项卡 在我的应用程序的 iPad 版本中 UIWebVie
  • 是否所有新应用程序都必须在 iPad 上运行才能通过应用程序商店审批流程? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我的一个朋友告诉我 有一个新的规则可以通过应用商店的审批流程 该应用程序还必须在 iPad 上运行 否则会被拒绝 我没有找到任何支持他说法的东西
  • GCD 与自定义队列

    我想知道这两者的性能有什么区别 dispatch async dispatch get global queue DISPATCH QUEUE PRIORITY HIGH 0 perform complex operation dispat
  • iOS 11 特定设置部分的 URL 方案停止工作

    我的应用程序使用 URL 方案将用户直接带到 设置 常规 关于 部分 以下 URL 在 10 3 x 中工作正常 应用程序首选项 根 常规 路径 关于 然而 这个 URL 方案在 iOS 11 GM 版本中不再有效 它仅启动 设置 应用程序
  • 如何从地址簿中获取一个人的电话号码?

    我想做的就是让用户从地址簿中选择一个号码 我在这个问题中找到了代码 如何从地址簿联系人获取电话号码 iphone sdk https stackoverflow com questions 286207 how to get a phone

随机推荐

  • 选择/拖动文本时停止页面滚动

    我有一个页面 我不希望用户能够滚动 为了防止这种情况 我只是将主体设置为隐藏溢出样式 直到用户尝试选择一些文本然后拖动到底部为止 这已经足够了 然后窗口会随着用户的拖动而滚动 我怎样才能防止这种情况发生 use position fixed
  • TabView 在切换选项卡时重置导航堆栈

    我有一个简单的 TabView TabView NavigationView VStack NavigationLink destination Text Detail Text Go to detail tabItem Text Firs
  • 从 RGBA 像素字节数据重建 UIImage 时出现问题

    我需要从单个灰度图像 红色 橙色 黄色等 创建 12 个彩色图像 源图像实际上是PNG RGBA 我正在使用我找到的一个库 https github com PaulSolt UIImage Conversion https github
  • 硒元素位置

    有没有一种简单的方法可以从另一个元素中查找子元素 这两个项目都已使用 PageFactory 定位 我们有一组包含许多模块的容器 我想确保它们显示在正确的位置 该API似乎只有以下方法 webElement findElement s By
  • Powershell 删除项目无法从函数中运行

    我需要将别名 cd 替换为名为 cd 的函数 我尝试从函数中删除别名 但没有成功 以下是一个简单的测试脚本 function remove alias get command cd Remove Item Path Alias cd get
  • 如何在 SVN Tortoise Commit 上不显示对话框?

    我有一个修改一些文件的过程 我想通过命令行 tortoise SVN 提交它们 而不必单击 确定 出现对话框 我的脚本被迫等待 直到我单击 确定 以下是我正在使用的论点 TortoiseProc exe command commit pat
  • ES6 的 webcomponents-lite 在 IE 11 和 10 中不起作用

    我们使用带有 ES6 语法的 WebComponents Web组件 http webcomponents org 填充材料webcomponents lite js 不包括 ShadowDOM 无法在 IE 11 中运行而 webcomp
  • 调整 UILabel 的大小以适合自定义 UITableViewCell 内的文本,无论宽度如何

    我试图让单元格中的标签具有正确的尺寸 无论设备或方向如何 我能够正确调整行高的大小 我还可以正确设置标签高度cellForRowAtIndexPath 并可以在我的日志中查看 但是 当它到达willDisplayRowAtIndexPath
  • 为什么在Python中关闭Sqlite3的游标

    使用Python时关闭游标有什么好处sqlite3模块 https docs python org 2 7 library sqlite3 html module sqlite3 或者它只是一个人工制品数据库API v2 0 https w
  • matplotlib 轴标签格式

    我对轴刻度标签的格式有疑问 我禁用了 y 轴的偏移 ax1 ticklabel format style sci useOffset False 并试图将其采用科学格式 但我得到的只是 0 00355872 但我期望的是这样的 3 5587
  • 在 EmberJS 中构建自动刷新的嵌套列表

    我如何在 EmberJS 中动态生成和更新嵌套列表 我的模型看起来像 App Node Em Object extend id 0 parentId 0 title The parentId代表id直接父元素的 如果我有数据 控制器内容中的
  • 如何在使用“.NETFramework,Version=v4.5.2”的项目中安装 System.Drawing.Common?

    我试图在 NETFramework Version v4 5 2 应用程序中用 C 编写一些单元测试 但所有测试都会给出下一个错误 System IO FileNotFoundException 无法加载文件或程序集 System Draw
  • SDL2 - 垂直同步不起作用

    我在程序中使用垂直同步 在我最小化窗口之前它工作正常 我在创建渲染器时这样做了 renderer SDL CreateRenderer window 1 SDL RENDERER ACCELERATED SDL RENDERER PRESE
  • 为什么 getoldtweets3 库提供 404 错误?

    我正在使用 getoldtweets3 库来抓取电晕爆发信息 我收到这个错误 error C Users Vilius anaconda3 python exe C Users Vilius PycharmProjects Sentimen
  • 使用 JSoup 解析 Html

    我正在尝试解析以下 URL 的 html http ocw mit edu courses aeronautics and astronautics 16 050 Thermal energy fall 2002 http ocw mit
  • 使用 DllImport 调用 C++ 函数

    这是基本的 如何从 C DllImport 调用下面的函数 SubscribeNewsFeed class LogAppender public L Append public LogAppender outfile TestLog txt
  • 如何声明二维字符串数组?

    string Tablero new string 3 3 我需要有一个 3x3 数组排列来保存信息 我如何在 C 中声明它 string Tablero new string 3 3 您还可以使用数组初始值设定项语法在同一行中实例化它 如
  • 如何强制 Gradle 重新下载依赖项?

    如何告诉 Gradle 从存储库重新下载依赖项 通常 您可以使用命令行选项刷新缓存中的依赖项 刷新依赖项 https docs gradle org current userguide dependency management html
  • JAGS 中缺少预测数据模型

    我正在尝试在 JAGS 中编写最简单的缺失数据模型 一个预测变量 有一些缺失的数据点 和一个结果变量 我知道这个例子不是最有用或最现实的 但它可以帮助我在继续处理更复杂的缺失预测数据场景之前解决模型问题 模型和数据如下 但这是编译错误 Er
  • 动态 UILabel 大小 iOS 7 问题

    我正在尝试根据文本高度动态调整标签大小 UILabel 中的高度可以从 0 行到多行不等 我已经为这个问题提出了一个解决方案 该解决方案在 iOS 8 上运行良好 但在 iOS 7 1 上失败 我也试图支持它 该项目中未使用自动布局 所有约