사용 가능한 공유 옵션이있는 기본 iOS 6 공유 작업 시트를 표시하는 방법은 무엇입니까?


97

일부 앱은 공유 옵션이있는 iOS 6의 기본 작업 시트를 표시합니다.

Social Framework 에는 작성 용과 요청 용으로 하나씩 만 두 개의 클래스가 있습니다.

내가 찾은 것은 SLComposeViewController를 사용하여 특정 서비스를 작성하는 것에 관한 것이며 이것을 표시하기 전에 서비스를 사용할 수 있는지 직접 쿼리해야합니다. 그리고 나만의 아이콘으로 나만의 액션 시트를 만들어야합니다.

이러한 앱은 iOS 6에서이 기본 공유 옵션 작업 시트를 어떻게 표시합니까? 아니면 오픈 소스 프레임 워크를 사용하고 있습니까?


wechat, weibo, qq와 같은 사용자 지정 아이콘으로 공유 시트를 열고 기능을 통합하고 싶습니다. 어떻게해야합니까?
Ravi Ojha

이 링크도 확인하십시오 .. stackoverflow.com/a/35267035/3908884
Doshi 만나기

답변:


223

UIActivityViewController 다른 대답에 명시된이 사소한한다. 공유 할 텍스트 / 이미지 / URL을 지정하고 활동보기 컨트롤러를 모달로 표시하면 iOS가 적용 가능한 모든 공유 서비스를 자동으로 표시합니다. 예 :

목표 -C

- (void)shareText:(NSString *)text andImage:(UIImage *)image andUrl:(URL *)url
{
    NSMutableArray *sharingItems = [NSMutableArray new];

    if (text) {
        [sharingItems addObject:text];
    }
    if (image) {
        [sharingItems addObject:image];
    }
    if (url) {
        [sharingItems addObject:url];
    }

    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];
    [self presentViewController:activityController animated:YES completion:nil];
}

빠른

func share(sharingText: String?, sharingImage: UIImage?, sharingURL: URL?) {
    let sharingItems:[AnyObject?] = [
                                        sharingText as AnyObject,
                                        sharingImage as AnyObject,
                                        sharingURL as AnyObject
                                    ] 
    let activityViewController = UIActivityViewController(activityItems: sharingItems.compactMap({$0}), applicationActivities: nil)
    if UIDevice.current.userInterfaceIdiom == .pad {
        activityViewController.popoverPresentationController?.sourceView = view
    }
    present(activityViewController, animated: true, completion: nil)
}

6
Swift 버전에 대한 멋진 편집입니다. + = 항목에 대한 .append (item)을 변경합니다. 더 신속하게 보입니다
Ignacio Inglese 2007-07-07

2
스위프트의 최신 버전에서 교체 AnyObject[]()[AnyObject]()
루벤 마르티네스 주니어

5
작동, 설정 (페이스 북 / 트위터)에서 각 계정에 로그인 한 후에 만 ​​작동하지만, 사진 앱 / 노트 앱에서는 사용자가 로그인하지 않아도 옵션을 사용할 수 있습니다. 이유를 설명해 주시겠습니까? 아니면 다른 해결 방법이 있습니까?
Jaldip Katre 2014

4
나는 아이 패드에 아이폰 OS 8 지원을위한 편집을 추가했습니다 - 당신은 또한 구성해야 UIActivityViewController의를 UIPopoverController하거나 충돌이 있습니다 present…. 지금까지 편집에서 세 번의 거부를 두 번 받았으므로 거부되었다고 가정하면 직접 편집을 추가하고 싶은지 확인할 수 있습니다. 또는 아닙니다 :-)
Benjohn

아, 편집은 모든 것을 설명하는 이 답변 을 인용 합니다.
Benjohn 2014

39

를 사용하려면이 추가 UIActivityViewController.

-(IBAction)shareButtonPressed:(id)sender {

    NSLog(@"shareButton pressed");

    NSString *texttoshare = _txt; //this is your text string to share
    UIImage *imagetoshare = _img; //this is your image to share
    NSArray *activityItems = @[texttoshare, imagetoshare];    
    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
    activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePrint];
    [self presentViewController:activityVC animated:TRUE completion:nil];
}

2
제외도 표시하므로 선호하는 답변입니다.
José
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.