2014-10-20 2 views
1

사용자가 AVC (Activity View Controller)를 사용하여 미리 만든 이미지를 공유 할 수있는 기본 Swift를 사용하여 앱을 만들고 있습니다. 이미지는 1024x1024에서 꽤 높은 해상도이지만 iOS7의 '메시지'로 전달되면 상단과 하단이 잘립니다. 이는 이미지가 128x128이거나 iOS8에서 해상도를 공유하는 경우 발생합니다.Activity View Controller에서 플랫폼별로 다른 그림을 공유하는 방법은 무엇입니까?

AVC를 표시하기 전에 PNGDataRepresentation으로 이미지를 입력하므로 사용자가 선택한 플랫폼에 따라 다른 이미지를 피드하는 방법이 있는지 궁금합니다. 기본적으로 사용자가 저장 또는 Facebook 공유를 선택하면 메시지 대 고해상도를 선택하면 낮은 해상도의 자산을 가리 킵니다. 아래

func openShareWidget() 
{ 

    var activityProvider: ShareActivityProvider = ShareActivityProvider(); 
    activityProvider.currentType = self.currentType; 

    var imageData : NSData = UIImagePNGRepresentation(selectedCell.getSharingImage()); 
    var activityItems : NSArray = [activityProvider, imageData]; 

    var activityController : SharingActivityViewController = SharingActivityViewController(activityItems: activityItems, applicationActivities: []); 

    presentViewController(activityController, animated: true, completion: nil); 
}  

내 ActivityProvider 확장 구현 :이 왔

class ShareActivityProvider: UIActivityItemProvider, UIActivityItemSource { 

var currentType : ImageType!; 

override func activityViewController(activityViewController: UIActivityViewController, itemForActivityType activityType: String) -> AnyObject? 
{ 
    switch activityType 
    { 
     case UIActivityTypeMail: 
      return "" ; 
     case UIActivityTypeMessage: 
      return ""; 
     case UIActivityTypePostToFacebook: 
      return "Facebook" 
     case UIActivityTypePostToTwitter: 
      return "Twitter"; 
     default: 
      return ""; 
    } 
} 

override func activityViewControllerPlaceholderItem(activityViewController: UIActivityViewController) -> AnyObject 
{ 
    return ""; 
} 

}

답변

0

여러 UIActivityItem 공급자를 사용하여 작동합니다. 하나는 메시지 본문의 텍스트를 제공하는 반면, 두 번째는 이미지 자체를 제공합니다.

func openShareWidget() 
{ 

    var textProvider : ShareTextActivityProvider = ShareTextActivityProvider(); // same as ShareActivityProvider from question  
    var imgProvider : ShareImageActivityProvider = ShareImageActivityProvider() 

    var activityItems : NSArray = [textProvider, imgProvider]; 

    var activityController : SharingActivityViewController = SharingActivityViewController(activityItems: activityItems, applicationActivities: []); 

    presentViewController(activityController, animated: true, completion: nil); 
} 

그리고 여기가 ShareImageActivityProvider에게의

class ShareImageActivityProvider: UIActivityItemProvider { 

var selectedCell : ImageCell!; 

override func activityViewController(activityViewController: UIActivityViewController, itemForActivityType activityType: String) -> AnyObject? 
{ 
    return UIImagePNGRepresentation(selectedCell.getSharingImage(activityType)); 
} 

override func activityViewControllerPlaceholderItem(activityViewController: UIActivityViewController) -> AnyObject 
{ 
    return ""; 
} 

} 

GetSharingImage :

func getSharingImage(activityType : String) -> UIImage 
    { 
    switch activityType 
     { 
     case UIActivityTypeMessage: 
      return UIImage(named: imgPathLOW); 
     case UIActivityTypePostToFacebook, UIActivityTypeMail, UIActivityTypePostToTwitter: 
      return UIImage(named: imgPathHD); 
     default: 
      return UIImage(named: "Tex_Empty"); 
    } 
}