如何将 3 个 UIButtons 对齐到 UITableCellView 的中心?

2023-11-23

我怎样才能对齐3UIButtons 到 a 的中心UITableCellView?

例如说我有 3UIButtons 的标题:

  1. Email
  2. Phone
  3. Skype

其中一项或多项是可能的UIButtons 被隐藏。例如,如果电话UIButton隐藏,则只有电子邮件和 Skype 应在中心对齐。如果电话和 Skype 被隐藏,则只有电子邮件应居中对齐。

当任何一个UIButtons 是隐藏的,可见的应该在中心对齐。

我想将它们水平和垂直居中。


针对 xcode 7 进行测试:

我想你正在寻找类似的东西

enter image description here

解决方案:

enter image description here

Steps: 1) what is needed is an encapsulating view which holds all three buttons (skype, phone, email) into center irrespective of whether there is one button, two or three inside it. For that a holder view is created which is shown with green background in below snapshot.enter image description here

该持有者视图的约束是

enter image description here

它只是保存所有子视图,它将从其内容中获取其大小,因此不需要给它高度/宽度限制。

2)现在中心按钮的约束将是

enter image description here

3)两侧按钮的约束将是

enter image description here

如果您需要隐藏任何按钮,只需将其宽度约束常量设置为 0,所有其他按钮将相应地重新排列

对于 TableView 单元格:

    @IBOutlet weak var emailButtonWidthConstraint : NSLayoutConstraint?
    @IBOutlet weak var phoneButtonWidthConstraint : NSLayoutConstraint?
    @IBOutlet weak var skypeButtonWidthConstraint : NSLayoutConstraint?

    func showButtons(showSkype showSkype : Bool, showEmail : Bool, showPhone : Bool ){
        emailButtonWidthConstraint?.constant = showEmail ? 54.0 : 0.0
        phoneButtonWidthConstraint?.constant = showPhone ? 54.0 : 0.0
        skypeButtonWidthConstraint?.constant = showSkype ? 54.0 : 0.0

        self.layoutIfNeeded()
    }

Use:

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("customCell", forIndexPath: indexPath) as? CustomCell

        if indexPath.row == 0 {
            cell?.showButtons(showSkype: true, showEmail: true, showPhone: true)
        } else if indexPath.row == 1 {
            cell?.showButtons(showSkype: false, showEmail: true, showPhone: true)
        } else if indexPath.row == 2 {
            cell?.showButtons(showSkype: true, showEmail: false, showPhone: true)
        } else if indexPath.row == 3 {
            cell?.showButtons(showSkype: true, showEmail: true, showPhone: false)
        } else if indexPath.row == 4 {
            cell?.showButtons(showSkype: false, showEmail: false, showPhone: true)
        } else if indexPath.row == 5 {
            cell?.showButtons(showSkype: false, showEmail: true, showPhone: false)
        } else if indexPath.row == 6 {
            cell?.showButtons(showSkype: true, showEmail: false, showPhone: false)
        } else {
            cell?.showButtons(showSkype: true, showEmail: true, showPhone: true)
        }

        return cell!
    }

使用 UIStackView 也可以实现同样的效果(显然不会出现所有这些令人头疼的问题),但它不能在 9.0 之前的 iOS 上运行

更新(2015 年 10 月 26 日):

GitHub 存储库用于测试项目

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

如何将 3 个 UIButtons 对齐到 UITableCellView 的中心? 的相关文章

  • 在 iOS 上使用 HEVC 编码器输出视频尺寸巨大

    我有一个项目 目前使用 H 264 编码器在 iOS 上录制视频 我想尝试在 iOS 11 中使用新的 HEVC 编码器来减小文件大小 但发现使用 HEVC 编码器会导致文件大小急剧膨胀 GitHub 上的一个项目显示了该问题 它使用 H
  • 在 Firebase 中构建聊天应用的数据

    我正在关注 Firebase 指南结构化数据 https firebase google com docs database ios structure data flatten data structures对于聊天应用程序 他们建议的结
  • 如何在 SQLite 中替换字符串?

    如何更新具有以下内容的表列 var mobile 233KKFSDK3234 Documents Page jpg 并将其替换为 Documents Page jpg 在 SQLite 中 注意 所有文字 除了 Documents 是动态的
  • 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 应用程序打开 YouTube 频道的最新 URL 方案是什么 [重复]

    这个问题在这里已经有答案了 我想使用 iPhone 应用程序中的频道打开 Youtube 应用程序 以前我使用以下 URL 方案并且工作正常 youtube 用户 频道名称 但在我将 Youtube 应用程序更新到最新的 2 6 0 后 这
  • 除非在后台线程中获取新的引用,否则存在潜在的引用计数问题

    我有一个second https stackoverflow com questions 28898966 prefer property accessor or kvc style for accessing core data prop
  • 无需 iPhone 6 Plus 即可预览 iOS 应用程序

    我已经在 Yosemite 中使用 iPhone 6 和 Quicktime 完成了 iOS 应用程序预览 视频 但我无法在 iTunes Connect 中为 iPhone 6 上传它 而且我没有 iPhone 6 设备 有没有办法在没有
  • ios Vision VNImageRequestHandler方向问题

    我正在尝试使用相机通过相机检测脸部VNImageRequestHandler iOS 愿景 当我在横向模式下用相机指向照片时 它会检测到面部 但方向模式相反 let detectFaceRequestHandler VNImageReque
  • iOS 设置 MKMapView 中心,因此提供的位置位于底部中心

    我有一个 MKMapView 和一个永不改变的 CLLocationCooperative2D 我想做的是将地图居中 以便该坐标将放置在地图的底部中心 我可以用简单的方法将地图集中在这个坐标上 MKCoordinateRegion view
  • 如何修复 ReactiveCocoa(带有 CocoaPods)的安装?

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

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

    我有一个UIViewController我正在从第一个视图控制器导航到第二个视图控制器 我想更改显示在navigationcontroller为了回去 SecondViewController secondController Second
  • 如何获取 UITableView 中的所有单元格

    假设我有一个包含多行的 UITableView 我想在某个时间点将所有 UITableViewCells 作为 NSArray 获取 我努力了 tableView visibleCells 但这种方法有一个问题 我无法拥有当前不在当前屏幕中
  • 在 JSQMessagesViewController 中显示 LocationMediaItem

    我刚刚尝试实施LocationMediaItem in my Xamarin iOS应用程序使用JSQMessagesViewController 一切都很顺利 唯一的问题是UICollectionView应该显示位置的单元格永远停留在加载
  • 如何以编程方式使用资产目录图像的切片信息?

    我的项目中曾经有一个图像 我会像这样加载它 UIImage image UIImage imageNamed image name resizableImageWithCapInsets UIEdgeInsetsMake 10 0f 10
  • 如何在 Swift 中创建 UIAlertView?

    我一直在努力在 Swift 中创建 UIAlertView 但由于某种原因我无法得到正确的语句 因为我收到此错误 找不到接受提供的 init 重载 论点 我是这样写的 let button2Alert UIAlertView UIAlert
  • 断点条件错误

    我已经根据条件设置了断点 event name isEqualToString Some Name 这很好用 但是 当我尝试添加另一个带有条件的断点时 part name isEqualToString Some Value With A
  • 快速钥匙串更新只有在第二次尝试时才起作用

    您好 我在更新存储在钥匙串中的登录信息方面遇到了 iOS 钥匙串的一个非常奇怪的问题 因此 如果没有保存的凭据 则正确运行保存函数会保存登录信息 如果登录信息已存在并且用户更新了密码 则更新功能仅正确更新密码 但是 如果登录信息存在并且我尝
  • 进入后台时 Alamofire 请求卡住?

    我正在使用 Alamofire 调用 Web 服务 该服务需要相当长的时间才能加载 如果应用程序进入后台 当我返回应用程序时 我会被加载程序卡住 我想这是因为调用永远不会向我的完成处理程序返回任何内容 我该如何解决这个问题 您可以使用后台抓

随机推荐

  • 在单独的线程中启动烧瓶应用程序

    我目前正在开发一个 Python 应用程序 我想在其中查看实时统计数据 我想用Flask以便于使用和理解 问题是我的 Flask 服务器应该在我的 Python 应用程序的最开始处启动并在最后停止 它应该看起来像这样 def main My
  • AsyncStorage 是否跨应用程序共享?

    我的问题源自文档 https facebook github io react native docs asyncstorage html clear AsyncStorage clear gt 擦除所有客户端 库等的所有 AsyncSto
  • 计算两个日期之间的营业时间

    如何计算两个日期之间的营业时间 例如我们有两个日期 2010年1月1日 15 00 和 2010年1月4日 12 00 我们的工作时间是工作日 09 00 至 17 00 如何用sql计算工作时间 Baran 的答案针对 SQL 2005
  • 将 LINQ to SQL 与 Oracle 结合使用[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我知道 linq to sql 实际上是 LINQ to SQL Server 我还读到 人们可以构建自己的 LINQ 提供程序 以便连接到其他数据库系统 如 oracle 或
  • Perl Parallel::ForkManager 与 DBI 数据库处理程序

    我对并行执行多个数据库操作感兴趣 我已经使用过 Perl Parallel ForkManager 但尚未将其用于任何数据库 我读过数据库连接是没有得到很好的支持有了这个 有人对此有经验吗 作为一个例子 我可能会生成一个系统调用 它执行 D
  • Traefik Dashboard:Ingress 和 IngressRoute,它们可以共存吗?

    最近我正在将一个项目迁移到 Kubernetes 并使用 Traefik 作为入口控制器 对于 Traefik 我使用 Traefik Ku bernetes Ingress 提供程序进行路由 当我尝试添加 Traefik 仪表板时 我发现
  • 多个键范围作为 CouchDB 视图的参数

    根本问题 假设我的文档有 类别 and 时间戳 如果我想要所有文件 foo 时间戳在过去两个小时内的类别 很简单 function doc emit doc category doc timestamp null 然后查询为 GET ser
  • GWT 服务异常日志记录的最佳实践

    我决定将日志系统添加到我的 gwt 服务层 首先 我想记录从该层引发的所有异常 我有一个类似于Spring的ServletDispatcher的对象 它调用其他服务 我以为我可以在那里添加日志记录 但我意识到 GWT 服务将已检查的异常包装
  • CSS边距恐怖;边距在父元素外部添加空间[重复]

    这个问题在这里已经有答案了 我的 CSS 边距没有按照我想要或期望的方式运行 我似乎我的标题 margin top 影响了它周围的 div 标签 This is what I want and expect but this is what
  • 更新 matplotlib 中的行

    我有一个包含多个数据集的图表 随着数据的更新 我需要不断地重新绘制这些线 每条线都是单独的 如何重复删除并重新建立它 最好不必每次都删除整个图表并重新绘制其上的所有线条 usr bin env python import time from
  • 我可以使用 jquery 确定设备处于纵向还是横向模式吗?

    我想有条件地改变用户在我要创建的照片库网站上看到的内容 具体取决于用于查看该网站的设备是否处于纵向 垂直与横向 水平模式 方向 这可能吗 Try the orientationchange事件处理程序 如下所示 window bind or
  • 从 MySQL 中的字段中选择最常见的值

    我有一个包含一百万行的表 如何从字段中选择最常见的 表中出现最多的值 值 您需要按感兴趣的列进行分组 并为每个值选择该值本身及其出现的行数 然后就是排序 将最常见的值放在第一位 并将结果限制为一行的问题 以查询形式 SELECT colum
  • 如何更改 GGally::ggpairs 的调色板?

    这与中的问题相同R 和 ggpairs 中用户定义的调色板 or 有没有办法使用 ggplot 更改 GGally ggpairs 的调色板 只是那里的解决方案不再有效 我也想改变调色板 但是有没有办法使用 ggplot 更改 GGally
  • Python:确定序列中的任何项目是否等于任何其他项目

    我想比较多个对象并返回True仅当所有对象之间不相等时 我尝试使用下面的代码 但它不起作用 如果 obj1 和 obj3 相等且 obj2 和 obj3 不相等 则结果为True obj1 obj2 obj3 我有超过 3 个对象需要比较
  • Centos 6.4 - 无法从共享对象映射段:权限被拒绝

    您好 我正在尝试安装 Phusion Passenger 安装成功 但执行时出现以下错误service httpd start Starting httpd httpd Syntax error on line 221 of etc htt
  • 具有多个参数的 MVC4 Web API Rest 接口

    我有一个名为 LoginController 的控制器 其 Get 方法的签名为 public string Get string Key string Code string UserID string Password 我希望能够通过类
  • Github Actions 有模板吗

    由于我的 Github Actions 中有重复的步骤 我想创建一个模板 让我们举个例子 name ci on push jobs build and test strategy matrix os ubuntu latest runs o
  • 如何多次使用相同的参数?

    我知道关于sprintf 但是如何多次使用相同的参数呢 如果我使用以下代码 则会收到有关使用少量参数的错误 sprintf blabla s 11111 s test 我想更换 s with test twice Use the 编号占位符
  • Javascript 排序“不稳定” - 我该如何解决这个问题?

    根据MDN spec Javascript sort 函数 不稳定 不维护相同元素的输入顺序 讽刺的是 Firefox 目前似乎还没有实现这一点 但 Chrome 似乎实现了 这给我留下了一些问题 我有一组元素要排序 一旦排序 我想将它们标
  • 如何将 3 个 UIButtons 对齐到 UITableCellView 的中心?

    我怎样才能对齐3UIButtons 到 a 的中心UITableCellView 例如说我有 3UIButtons 的标题 Email Phone Skype 其中一项或多项是可能的UIButtons 被隐藏 例如 如果电话UIButton