Споделете екранна снимка във Facebook

Използвам следния код, за да направя екранна снимка на моя iPhone и да я запазя във фотоалбума. Това, което бих искал, е бутон за споделяне, който автоматично да изпраща тази екранна снимка във Facebook. Някой има ли идеи как да се реализира?

- (UIImage*)captureView:(UIView *)view
{
CGRect rect = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[view.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}

- (void)saveScreenshotToPhotosAlbum:(UIView *)view
{
UIImageWriteToSavedPhotosAlbum([self captureView:self.view], nil, nil, nil);
}

- (void)viewDidLoad
{
[super viewDidLoad];
[self setUpData];

CGRect frame = self.view.bounds;
frame.size.height -= 90;

self.tableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain];
[self.tableView setBackgroundColor:[UIColor clearColor]];
[self.tableView setDataSource:self];
[self.tableView setDelegate:self];

[self.view addSubview:self.tableView];

UIBarButtonItem *shareBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(saveScreenshotToPhotosAlbum:)];
[self.navigationItem setRightBarButtonItem:shareBtn];

}

person Steve    schedule 26.04.2013    source източник


Отговори (1)


Е, можете да използвате вградената Facebook интеграция на iOS6. Включете рамката Social в Build Phases Кодът трябва да изглежда почти подобно на този изрязан:

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]){
    mySLComposerSheet = [[SLComposeViewController alloc] init];
    mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    [mySLComposerSheet setInitialText:@"Some Text"];
    [mySLComposerSheet addImage:[self captureView:self.view]];
    [self presentViewController:mySLComposerSheet animated:YES completion:nil];
}

* Имайте предвид, че това няма да сподели „автоматично“ екранната снимка, но ще я прикачи към лист за композиране във Facebook и потребителят може да я публикува, ако иска. За да го направите автоматично, ще трябва да направите по-задълбочена интеграция във Facebook и потребителят трябва да даде разрешение приложението ви да публикува на неговата/нейната стена. Това отново трябва да се направи с рамката Social или ShareKit, ако проектът Deployment target е под iOS 6.0

person Nikola Kirev    schedule 26.04.2013
comment
Добре, благодаря, как да превърна това в бутон на лентата за навигация? - person Steve; 26.04.2013
comment
Просто добавете този код във вашия saveScreenshotToPhotosAlbum: метод и той трябва да работи. - person Nikola Kirev; 26.04.2013
comment
Добавих социална рамка и импортиране. Сега използвам недеклариран идентификатор "mySLComposerSheet" - person Steve; 26.04.2013
comment
Просто трябва да коригирате горното, в противен случай изглежда страхотно, много полезна функция за всяко приложение за снимане и споделяне. - person Steve; 26.04.2013
comment
деклариран в h файл, поправя го и работи като мечта! Благодаря ви много! SLComposeViewController *mySLComposerSheet; - person Steve; 26.04.2013
comment
А, да.. Забравихте за имуществото, което трябва да декларирате. Можете да го преработите така, че да не се нуждае от свойство, но текущото изпълнение се нуждае от такова. Радвам се, че ти помогнах. - person Nikola Kirev; 27.04.2013