更改SLComposeSheetConfigurationItem的色调/文本颜色

时间:2014-09-24 11:16:56

标签: ios ios8 ios8-share-extension ios8-extension

所以在过去的两周里,我一直在处理我的GitHub回购https://github.com/satheeshwaran/iOS-8-Features-Demo,在那里我试图演示在iOS 8中引入的Share扩展。我知道了我可以添加的方式{{1 {}为SLComposeSheetConfigurationItem,但我无法弄清楚如何更改SLComposeServiceViewController的色调颜色或文字颜色。

到目前为止我做了什么,

enter image description here

在上图中看到我想将描述和My First Share设置为我选择的某种颜色,也可能是我想自定义字体或其他东西。我稍微挖掘了 SocialFramework ,但却无法从中获取任何东西。

我在iPad上看到了Evernote的扩展分享,看起来像这样, enter image description here

如果你看到底部有一个图标,文字颜色等也与导航栏的主题相匹配。

引用WWDC 2014关于扩展程序设计的演示文稿,

  

SLComposeSheetConfigurationItem用于标准用户界面   用于自定义UI的UI / SLComposeServiceViewController   来到我的问题,

  1. 我可以自定义NSViewControllerSLComposeServiceViewController看起来像这样吗?
  2. 第二个问题是关于引用,默认SLComposeSheetConfigurationItem可以自定义吗?或者我应该使用SLComposeServiceViewController子类来创建自己的UI。
  3. 如何让Evernote完成自定义UIViewController子类以复制行为或使用UIViewController(我不确定是否要问这个,但我想要答案)

4 个答案:

答案 0 :(得分:6)

用于自定义导航栏。 正常的非点符号方法对我来说很好。

[[[self navigationController] navigationBar] setTintColor:[UIColor whiteColor]];
[[[self navigationController] navigationBar] setBackgroundColor:[UIColor redColor]];
[[self navigationItem] setTitleView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"elephant.png"]]];

对于SLComposeSheetConfigurationItem,看起来像是给定图标的自定义子类。

SLComposeSheetConfigurationItem上配置的唯一公开方法 @property (nonatomic, copy) NSString *title; // The displayed name of the option. @property (nonatomic, copy) NSString *value; // The current value/setting of the option. @property (nonatomic, assign) BOOL valuePending; // Default is NO. set to YES to show a progress indicator. Can be used with a value too.

答案 1 :(得分:4)

我的代码,我用它来获得类似于Evernote的结果:

func getTopWithColor(color: UIColor, size: CGSize) -> UIImage {
    let rect = CGRectMake(0, 0, size.width, size.height)
    UIGraphicsBeginImageContextWithOptions(size, false, 0)
    color.setFill()
    UIRectFill(rect)
    if let img = UIImage(named: "icon.png") {
        img.drawInRect(CGRectMake((size.width-size.height)/2, 0, size.height, size.height))
    }
    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return image
}

override func viewDidLoad() {
    super.viewDidLoad()

    self.navigationController?.navigationBar.tintColor = UIColor.blackColor()
    let navSize = self.navigationController?.navigationBar.frame.size
    self.navigationController?.navigationBar.setBackgroundImage(getTopWithColor(UIColor.whiteColor(), size: navSize!), forBarMetrics: .Default)
}

SLComposeServiceViewController with custom navigation bar

答案 2 :(得分:1)

实际上SLComposeServiceViewController的导航控制器是一个SLSheetNavigationController,将标题视图设置为其导航栏似乎没有任何效果,也是标题文本属性。

答案 3 :(得分:0)

我认为这里是正确的答案:

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

    if let table = textView.superview?.superview?.superview as? UITableView {
        let length = table.numberOfRows(inSection: 0)
        table.scrollToRow(at: IndexPath(row: length - 1, section: 0), at: .bottom, animated: true)

        if let row = table.cellForRow(at: IndexPath(item: 0, section: 0)) as? UITableViewCell {
            row.textLabel?.textColor = UIColor.green
        }
    }
}

SLComposeSheetConfigurationItem刚刚在UITableViewCell中呈现,您可以对其进行修改。