自定义 SLComposeSheetConfigurationItem

Customizing SLComposeSheetConfigurationItem

我想自定义 SLComposeSheetConfigurationItem 我希望更改其标题和值的字体和颜色 似乎没有这方面的任何文档,但像 Evernote 这样的几个应用程序已经做到了。

SLComposeSheetConfigurationItem的内容是在tableView中加载的,所以你不能直接访问这两个label。您需要首先通过访问 views 的层次结构来获取 tableView,然后从 table 视图访问 visibleCells。只有一个单元格,因此访问第一个单元格的 contentViewsubViews,这将为您提供两个标签。

因此,第一个标签在左侧,第二个标签在右侧。像我们在普通标签中所做的那样更改其字体大小、颜色、标题并重新加载数据。

参见下面的代码。

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    if let slSheet = self.children.first as? UINavigationController {

        // Change color of Cancel and Post Button
        slSheet.navigationBar.tintColor = .orange

        // All contents of botton view are loaded inside table view at specific level of child view
        if let tblView = slSheet.children.first?.view.subviews.first as? UITableView,
            let firstCell = tblView.visibleCells.first
        {

            // Enumerate on subViews of contentView

            for (index, label) in firstCell.contentView.subviews.enumerated() {

                if index == 0 {

                    // Left label
                    if let lblLeft = label as? UILabel {
                        lblLeft.font = UIFont(name: "Helvetica-Bold", size: 20)
                        lblLeft.textColor = .orange
                    }

                } else {

                    // Right label
                    if let lblRight = label as? UILabel {
                        lblRight.font = UIFont(name: "Helvetica", size: 14)
                        lblRight.textColor = .green
                    }
                }
            }
            // Reload table if label not loading properly
            tblView.reloadData()
        }
    }
}

输出: