模仿 iOS 6.0 中引入的 SLComposeViewController 功能。您可以为任何社交网络创建作曲器。REComposeViewController 不提供分享逻辑,只提供其视觉部分。
在 Xcode 中构建并运行 REComposeViewControllerExample
项目,查看 REComposeViewController
的实际应用。
您只需要将 REComposeViewController
文件复制到您的项目中,并在将使用它的类的顶部添加 #include "REComposeViewController.h"
即可。
REComposeViewController *composeViewController = [[REComposeViewController alloc] init];
composeViewController.title = @"Social Network";
composeViewController.hasAttachment = YES;
composeViewController.attachmentImage = [UIImage imageNamed:@"Flower.jpg"];
composeViewController.text = @"Hi there!";
[composeViewController presentFromRootViewController];
设置完成处理程序
composeViewController.completionHandler = ^(REComposeViewController *composeViewController, REComposeResult result) {
[composeViewController dismissViewControllerAnimated:YES completion:nil];
if (result == REComposeResultCancelled) {
NSLog(@"Cancelled");
}
if (result == REComposeResultPosted) {
NSLog(@"Text: %@", composeViewController.text);
}
};
或者,您可能想将控制器设置为符合 REComposeViewControllerDelegate
协议,以便在用户取消/发布时接收通知。
...
composeViewController.delegate = self;
...
- (void)composeViewController:(REComposeViewController *)composeViewController didFinishWithResult:(REComposeResult)result
{
[composeViewController dismissViewControllerAnimated:YES completion:nil];
if (result == REComposeResultCancelled) {
NSLog(@"Cancelled");
}
if (result == REComposeResultPosted) {
NSLog(@"Text = %@", composeViewController.text);
}
}
可以通过 UIAppearance 来自定义 REComposeViewController 导航栏。您使用 UIAppearance
协议来获取某个类的外观代理。您通过向类的外观代理发送外观修改消息来自定义类的实例的外观。
示例
[composeViewController.navigationBar setBackgroundImage:[UIImage imageNamed:@"bg"] forBarMetrics:UIBarMetricsDefault];
composeViewController.navigationItem.leftBarButtonItem.tintColor = [UIColor colorWithRed:60/255.0 green:165/255.0 blue:194/255.0 alpha:1];
composeViewController.navigationItem.rightBarButtonItem.tintColor = [UIColor colorWithRed:29/255.0 green:118/255.0 blue:143/255.0 alpha:1];
部分基于 DEFacebookComposeViewController 和 DETweetComposeViewController。
Roman Efimov
REComposeViewController 在 MIT 许可下可用。
版权 © 2013 Roman Efimov。
特此授予任何获得此软件及相关文档副本(以下称为“软件”)的个人在此软件上不受限制的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售副本的权利,并允许向提供软件的个人以这种方式使用软件,但必须遵守以下条件
上述版权声明和本许可声明应包含在软件的任何副本或实质性部分中。
软件按“现状”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、可用于特定目的和非侵犯性的担保。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任承担责任,无论这些责任产生于合同行为、侵权行为或其他行为,无论其与软件或使用软件有关、源于软件或其他软件的使用或处置。