在视图中自动布局“打开”时无法移动 UILabel 的 Y 位置

2023-11-24

我一定在这里遗漏了一些非常明显的东西,但这是一个让我沮丧了好几天的问题。

在 xcode 4.5 上的 iOS 项目中,我在 XIB 中有几个标签,一个在另一个之上,在一个UIScrollView占据一个UIView。每个标签与视图一样宽,并且每个标签比下一个标签高出大约 20 像素。有时,其中一个标签没有任何信息,因此它被设置为不可见,并且其下方的标签应该向上移动以占据空白空间。

问题是,如果在视图上“关闭”自动布局,标签将完全按照应有的方式向上移动,尽管UIScrollView不再滚动。如果是on,无论如何,标签都不会移动。

这是代码...我基本上只是使用一个快速函数将每个标签向上移动不可见标签的高度。

[self moveObjectBy: self.festNameLabel moveByY:-(yearsLabel.frame.size.height-2)];


// this just quickly moves a label. 
- (void)moveObjectBy:(UIView *)lbl moveByY:(int)byHeight {
    CGRect newFrame = lbl.frame;
    NSLog(@"%f, %d", newFrame.origin.y, byHeight);
    newFrame.origin.y += byHeight; //yearsLabel.frame.size.height;
    lbl.frame = newFrame;
}

当它运行时,NSLog显示 Y 已移动,但它在屏幕上没有移动。我确信它与垂直空间约束有关,但它不会让我删除约束,也不会让我将其更改为视图顶部空间以外的任何内容。就像我说的,我确信我错过了一些东西,但我已经用尽了我所知道的一切......


如果您只有一个可能隐藏的标签,则可以将其下方的标签向上移动,如下所示:

 -(void)contract {
    self.label2.hidden = YES;
    self.con2To1.constant = -34;
}

顶部标签对滚动视图的顶部有约束,所有其他标签对其上方和下方的标签有 20 点垂直距离约束。在此示例中,我隐藏了 label2。标签的高度均为 34 点,因此将约束常数从 20 更改为 -34 将当前隐藏的标签移动到其上方标签的正上方。

要将此方法与可以隐藏的多个标签一起使用,您需要为每个要隐藏的标签及其对上面标签的约束提供一个出口。实际上,您可以在没有约束条件的情况下做到这一点,但我不知道它是否会那么强大(它可能会选择错误的约束)。我可以通过循环遍历约束来找到与特定标签相关的约束,并且是该标签顶部的约束来执行相同的操作:

-(void)hideLabel:(UILabel *) label {
    label.hidden = YES;
    for (NSLayoutConstraint *con in self.scroller.constraints) {
        if (con.firstItem == label  && con.firstAttribute == NSLayoutAttributeTop) {
            con.constant = -34;
        }
    }
}

如果您愿意,可以修改相同的方法以使用动画 - 以下代码片段会淡出您想要隐藏的标签,同时对所有下部标签进行向上移动的动画。

 -(void)hideLabel:(UILabel *) label {
    for (NSLayoutConstraint *con in self.scroller.constraints) {
        if (con.firstItem == label  && con.firstAttribute == NSLayoutAttributeTop) {
            con.constant = -34;
            [UIView animateWithDuration:.5 animations:^{
                label.alpha = 0;
                [self.scroller layoutIfNeeded];
            }];
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在视图中自动布局“打开”时无法移动 UILabel 的 Y 位置 的相关文章

  • 以编程方式向 UIButton 标签添加阴影

    我试图向按钮标签添加 1px 黑色阴影 但没有成功 我试过这个 self setTitleShadowOffset CGSizeMake 0 1 但我得到 请求非结构或联合中的成员 setTitleShadowOffset 任何建议都会很棒
  • 检查系统时间是自动还是用户设置

    我需要在当前的项目中设置用户证明时间 我围绕这个问题发现了很多不同的问题 但似乎没有一个问题有我正在寻找的答案 这些是我到目前为止看过的问题 XCODE 如何从设备获取 验证准确的时间戳 https stackoverflow com qu
  • 如何更改便携式 xamarin ios 项目中的启动屏幕?

    我正在使用便携式 xamarin 形式 其中项目是 IOS 项目 在 IOS 项目中 我想创建闪屏 我在 ios 项目属性中添加了 Iphone 启动图像和 iPad 启动图像 当我运行该应用程序时 它显示默认的启动屏幕 我还尝试从 inf
  • iOS:将观察者添加到 UIView 的frame.origin.y?

    我正在尝试监视 UIView 框架原点的变化值并对其做出反应 我的代码 cell bottomView addObserver self forKeyPath frame origin options NSKeyValueObserving
  • 使用 UIKeyCommand 检测删除键

    任何人都知道如何使用检测 删除 键UIKeyCommand在 iOS 7 上 当人们在使用 Swift 时遇到问题时 我认为用 Objective C 和 Swift 编写一个小型的 完整的例子可能是一个很好的答案 请注意 Swift 没有
  • iOS 11 浮动 TableView 标题

    有一个应用程序包含多个部分 展开 时每个部分有几行 折叠 时没有 每个部分都有一个部分标题 使用以下子类重用它们UITableViewHeaderFooterView等等 到目前为止一切顺利 然后在 iOS 11 中 我使用了可视化调试器
  • 你如何在react-native中实现捏合缩放?

    我一直在研究 PanResponder 我当前的工作假设是 我将检测是否有两个触摸正在向外移动 如果是 则增加元素大小onPanResponderMove功能 这似乎是一种混乱的方法 有没有更顺畅的方法呢 如果您只需要简单的捏缩放功能 只需
  • ShareKit + Facebook 身份验证不起作用

    我正在使用 ShareKit 从我正在开发的 PhoneGap 应用程序发布到 Facebook 我在 Facebook 中创建了该应用程序 并在我的项目中安装了该插件 Twitter 工作正常 但当我尝试在 Facebook 上分享时出现
  • 如何修复 ReactiveCocoa(带有 CocoaPods)的安装?

    这里是新手 尝试将 ReactiveCocoa 2 2 4 和 CocoaPods 安装到项目中 但在运行时遇到错误 我用过github 上的这个 podspec https github com CocoaPods Specs blob
  • NSDateFormatter:根据 currentLocale 的日期,不包含年份

    这不会太难吧 我想显示不带年份的日期 例如 8 月 2 日 美国 或 02 08 德国 它也必须适用于许多其他语言环境 到目前为止 我唯一的想法是对年份进行正常格式 然后从生成的字符串中删除年份部分 我认为你需要看一下 NSString d
  • 将语音添加到自定义 UIMenuController

    我创建了一个自定义UIMenuController in a UIWebView但它似乎摆脱了 说出选择 选项UIMenuController在那之后 所有测试设备上的 偏好设置 中都打开了发言选择选项 并且它出现在其他应用程序中 包括非
  • 使用 AudioStreamer 获取 MP3 ID3 元数据和歌曲持续时间

    我在用着马特 加拉格尔的 AudioStreamer http cocoawithlove com 2008 09 streaming and playing live mp3 stream html通过 HTTP 播放 MP3 我需要知道
  • 使用 Cocoa/OSX 合并/堆叠两个图像

    我有一个 CGImageRef 我们称之为原始图像 和一个透明 png 水印 我正在尝试编写一种方法将水印放置在原始内容之上 并返回 CGImageRef 在 iOS 中 我会使用 UIKit 将它们绘制到上下文中 但这在 OSX 中似乎不
  • 如何获取 UITableView 中的所有单元格

    假设我有一个包含多行的 UITableView 我想在某个时间点将所有 UITableViewCells 作为 NSArray 获取 我努力了 tableView visibleCells 但这种方法有一个问题 我无法拥有当前不在当前屏幕中
  • iTunes connect 中不同应用程序的多个银行帐户[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 由于我们正在为客户开发 iPhone 应用程序 并且他希望对该应用程序收费 因此我们想知道是否可以在 iTunes 中连接多个银行帐户 以便将收入直接
  • let/var 如何解决可变性? [复制]

    这个问题在这里已经有答案了 我没有任何问题 我只是想对有关可变性的问题进行一些澄清 在 Objective C 中我们会使用例如NSMutableArray得到一个可变数组和NSArray得到一个不可变的 我对两者的内部运作了解不多 但据我
  • 将应用程序登录凭据发送给 AppStore 审核者

    我刚刚将我的应用程序上传到应用程序商店 该应用程序需要用户名 密码才能登录 但在上传过程中从未提示我输入任何凭据 有谁知道我如何向审阅者发送我的凭据 而不必等待他们审阅并请求凭据 您编辑应用程序元数据 标题 描述 关键字等 的页面最底部字段
  • Objective C (iphone) 关于发布的问题

    如果我创建一个视图 并将其添加为子视图并将其添加到数组中 是否必须释放它两次 UIView cat UIView alloc initWithFrame someFrame self view addSubview cat self ani
  • 选择 UITableViewCell 时 UIView 背景颜色消失

    我在界面生成器中构建了一个简单的 tableViewCell 它包含一个包含图像的 UIView 现在 当我选择单元格时 会显示默认的蓝色选择背景 但 UIView 的背景颜色消失了 我的 UITableViewCell 的实现文件没有做任
  • iOS 13 检查 CLLocationManager 的临时授权状态

    根据 WWDC 视频 https developer apple com videos play wwdc2019 705 https developer apple com videos play wwdc2019 705 当你要求 Al

随机推荐

  • 本地化字符串时使用 Strong/em 标签的正确方法是什么?

    我知道有些语言对单词的强调与英语不同 例如通过改变词尾而不是通过声音的变化来强调单词 如果您正在本地化一个网站 您会相信吗 strong and em 标签 及其位置 在其他语言中具有相同的含义 您会保持这种强调 与您的翻译人员核实还是将其
  • 如何正确验证 Google 令牌的完整性?

    我正在尝试通过用户的 Google 帐户安全地登录用户 我正处于使用检索 userID 和 oAuthToken 的阶段this科尔多瓦插件 现在我需要将这些凭据发送到我的服务器 然后在服务器端验证令牌的完整性 本质上我正在尝试执行this
  • 无法创建 SAAJ 元工厂:找不到提供程序 com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl

    我正在尝试将我的项目升级到 java 15 在尝试启动服务器时 我在 bean 创建过程中遇到错误 util context xml
  • 无法将 DaoAuthenticationConfigurer 应用于已构建的对象

    我收到这个异常 WARN org springframework web context support GenericWebApplicationContext Exception encountered during context i
  • 使用 Java+Scala+Slick2D 时“无法从给定的启动配置中找到主要方法”

    我有一个使用 Java Scala Slick2D 的项目 当从 eclipse 中启动时 该项目本身运行良好 但是当我尝试制作 jar 文件时 它就是拒绝工作 这是我在尝试将其导出为 Runnable jar 时不断收到的错误 如果我尝试
  • 将文件从 s3 存储桶传输到亚马逊 RDS 数据库

    我正在尝试将数据从 s3 存储桶加载到亚马逊 RDS 数据库 我知道这不是编程问题 但我真的很感谢帮助 我使用了下面的代码 aws rds restore db instance from s3 allocated storage 250
  • Django .filter 具有多种可能性的同一选项

    我有一个对象模型 我还有一个用于过滤结果的选项列表 我不确定是否有一种简单的方法来过滤模型中的对象 以便返回与过滤器列表中的任何项目匹配的任何对象 例如 returns all users with name starting with P
  • Xcode 界面生成器。这些自动调整大小蒙版设置有何不同?

    我现在很习惯在 IB 中使用自动调整大小蒙版 但是有两个自动调整大小设置 我不清楚它们有何不同 设置1 使用上下锚点自动调整大小http dl dropbox com u 11270323 stackoverflow autosize ma
  • 登录系统生成的PHP空会话文件

    最近我注意到正在创建许多空白会话 我不确定为什么 但我相信我正在以正确的方式做所有事情 目前我们创建一个会话 当用户logs in or 寄存器 然后我们检查用户是否使用isset COOKIE auth 属于登录或注册期间创建的会话 如果
  • 按值分组 RAND()

    有可能获得组的随机值吗 nID val A XXX A YYY B L B M B N B P 使用此 SQL SELECT nID VAL FROM T1 GROUP BY nID 我的结果总是 nID val A XXX B L 但我想
  • 如何在使用自定义窗口镶边时向 WPF 标题栏添加按钮?

    我正在尝试创建一个简单的按钮模板 其中按钮通常看起来像一条水平线 但是当鼠标悬停在按钮上时 按钮后面会显示一个 矩形 颜色填充 这是我的代码 但我似乎无法触发触发器
  • 如何让子窗口保持在最上面?

    我在用window open从父窗口打开子窗口 我希望子窗口保持在顶部 以便用户在父窗口中进行输入时可以参考它 这可以做到吗 我目前使用的是 Firefox 但如果它能在所有浏览器中运行 那就太好了 怎么样使用一个弹出div而不是打开一个新
  • GitHub Packages Docker - 拉取映像配置时出错:未知 blob

    GitHub 包开始返回error pulling image configuration unknown blob这个周末尝试拉取 docker 镜像时 它仍然可以将图像推送到注册表 我在 GitHub 上没有找到任何指向问题的信息 00
  • MySQL 与实体框架 - 我做错了什么?

    我对实体框架甚至 ADO NET 完全陌生 通常不会对数据库做太多工作 我下载并安装了MySQL 连接器 NET 6 3 5 我在 Visual Studio 2010 中创建了一个新的 C 项目 我向我的项目添加了一个新的 ADO NET
  • 使用 Facebook4j api 从页面获取帖子

    我想知道是否有一种方法可以使用 Facebook4J API 从 Facebook 页面获取所有 甚至最近 帖子 我知道可以从用户的墙或提要中获取所有帖子 但我在 API 或文档中找不到任何显示如何从页面获取帖子的内容 看着http fac
  • 如何检查bash脚本中特定目录中是否存在文件?

    这是我一直在尝试的 但没有成功 如果我想检查 example 目录中是否存在文件 FILE 1 if e FILE example then echo File exists else echo File does not exist fi
  • 迭代字典时如何避免 swift 中的重复键错误

    我正在练习 swift 我正在尝试迭代字典来打印密钥 但它给了我一个 致命错误 字典文字包含重复的键 如何消除错误 let people age 14 age 15 age 75 age 43 age 103 age 87 age 12 f
  • 获取 svg 路径上点的 y 坐标

    我想我需要添加一些解释 我想问这个问题 因为太短的问题不符合质量标准 有趣 所以 问题是 如何获取 svg 路径上特定 x 坐标处点的 y 坐 标 这并不简单 因为一条路径可能有多个具有指定的点x协调 SVG DOM 中没有内置函数可以执行
  • 提取 DOCX 注释

    我是一名教师 我想要一份对我布置的论文发表评论的所有学 生以及他们所说内容的列表 Drive API 的东西对我来说太具有挑战性 但我想我可以将它们下载为 zip 并解析 XML 评论被标记为w comment标签 与w t对于评论文本和
  • 在视图中自动布局“打开”时无法移动 UILabel 的 Y 位置

    我一定在这里遗漏了一些非常明显的东西 但这是一个让我沮丧了好几天的问题 在 xcode 4 5 上的 iOS 项目中 我在 XIB 中有几个标签 一个在另一个之上 在一个UIScrollView占据一个UIView 每个标签与视图一样宽 并