所以在过去的两周里,我一直在处理我的GitHub回购https://github.com/satheeshwaran/iOS-8-Features-Demo,在那里我试图演示在iOS 8中引入的Share扩展。我知道了我可以添加的方式{{1 {}为SLComposeSheetConfigurationItem
,但我无法弄清楚如何更改SLComposeServiceViewController
的色调颜色或文字颜色。
到目前为止我做了什么,
在上图中看到我想将描述和My First Share设置为我选择的某种颜色,也可能是我想自定义字体或其他东西。我稍微挖掘了 SocialFramework ,但却无法从中获取任何东西。
我在iPad上看到了Evernote的扩展分享,看起来像这样,
如果你看到底部有一个图标,文字颜色等也与导航栏的主题相匹配。
引用WWDC 2014关于扩展程序设计的演示文稿,
SLComposeSheetConfigurationItem
用于标准用户界面 用于自定义UI的UI /SLComposeServiceViewController
来到我的问题,
NSViewController
和SLComposeServiceViewController
看起来像这样吗?SLComposeSheetConfigurationItem
可以自定义吗?或者我应该使用SLComposeServiceViewController
子类来创建自己的UI。UIViewController
子类以复制行为或使用UIViewController
(我不确定是否要问这个,但我想要答案)答案 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)
}
答案 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中呈现,您可以对其进行修改。