自定义 SLComposeSheetConfigurationItem
Customizing SLComposeSheetConfigurationItem
我想自定义 SLComposeSheetConfigurationItem
我希望更改其标题和值的字体和颜色
似乎没有这方面的任何文档,但像 Evernote 这样的几个应用程序已经做到了。
SLComposeSheetConfigurationItem
的内容是在tableView
中加载的,所以你不能直接访问这两个label
。您需要首先通过访问 views
的层次结构来获取 tableView
,然后从 table 视图访问 visibleCells
。只有一个单元格,因此访问第一个单元格的 contentView
的 subViews
,这将为您提供两个标签。
因此,第一个标签在左侧,第二个标签在右侧。像我们在普通标签中所做的那样更改其字体大小、颜色、标题并重新加载数据。
参见下面的代码。
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()
}
}
}
输出:
我想自定义 SLComposeSheetConfigurationItem 我希望更改其标题和值的字体和颜色 似乎没有这方面的任何文档,但像 Evernote 这样的几个应用程序已经做到了。
SLComposeSheetConfigurationItem
的内容是在tableView
中加载的,所以你不能直接访问这两个label
。您需要首先通过访问 views
的层次结构来获取 tableView
,然后从 table 视图访问 visibleCells
。只有一个单元格,因此访问第一个单元格的 contentView
的 subViews
,这将为您提供两个标签。
因此,第一个标签在左侧,第二个标签在右侧。像我们在普通标签中所做的那样更改其字体大小、颜色、标题并重新加载数据。
参见下面的代码。
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()
}
}
}
输出: