5

このリンクを使用してピンタレストに画像を投稿したい のですが、自分の要件に従ってコーディングを少し変更します ここに私のMainClassコードがあります

- (void)pInterest {
      UIImage *myImage;
      myImage=imgView.image;
      WebViewController *webViewController = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:nil];
      webViewController.mypimage = myImage;
     [[[[UIApplication sharedApplication] keyWindow] rootViewController] presentModalViewController:webViewController animated:YES];
}

したがって、画像を WebViewController に渡した後、 WebViewController クラスコードは次のようになります

- (void)viewDidLoad {
     //imageview.image=mypimage;
     [super viewDidLoad];
     NSString *description = @"Post your description here";

     // Generate urls for button and image
     NSString *sUrl = [NSString stringWithFormat:@"http://d30t6wl9ttrlhf.cloudfront.net/media/catalog/product/Heros/mypimage"];
     // NSLog(@"URL:%@", sUrl);
     NSString *protectedUrl = (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,(__bridge CFStringRef)sUrl, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
     NSLog(@"Protected URL:%@", protectedUrl);
     NSString *imageUrl = [NSString stringWithFormat:@"\"%@\"", sUrl];
     NSString *buttonUrl = [NSString stringWithFormat:@"\"http://pinterest.com/pin/create/button/?url=www.flor.com&media=%@&description=%@\"", protectedUrl, description];

     NSMutableString *htmlString = [[NSMutableString alloc] initWithCapacity:1000];
     [htmlString appendFormat:@"<html> <body>"];
     [htmlString appendFormat:@"<p align=\"center\"><a href=%@ class=\"pin-it-button\" count-layout=\"horizontal\"><img border=\"0\" src=\"http://assets.pinterest.com/images/PinExt.png\" title=\"Pin It\" /></a></p>", buttonUrl];
     [htmlString appendFormat:@"<p align=\"center\"><img width=\"400px\" height = \"400px\" src=%@></img></p>", imageUrl];
     [htmlString appendFormat:@"<script type=\"text/javascript\" src=\"//assets.pinterest.com/js/pinit.js\"></script>"];
     [htmlString appendFormat:@"</body> </html>"];
     [mywebview setBackgroundColor:[UIColor clearColor]];
     [mywebview loadHTMLString:htmlString baseURL:nil];
     [mywebview setOpaque:NO];
}

上記のコーディングを使用すると、webview には画像が表示されず、webview は以下のスクリーンショーのように見えます ここに画像の説明を入力 ここに画像の説明を入力

同じ画像インスタンスを WebViewController の画像ビューに割り当てると、作業中の imageview.image=mypimage;

私のウェブビューに画像が表示されない理由を教えてください。ありがとうございます。

4

3 に答える 3

8

このコードを使用してください......お役に立てば幸いです。

- (IBAction)pinit:(id)sender {
    [self postToPinterest];
}

- (IBAction)closeWebVIew:(id)sender {
    [webViewPinterest setHidden:YES];
}

- (NSString*) generatePinterestHTML {
   NSString *description = @"Post your description here";
 NSURL* sUrl = [NSString stringWithFormat:@"http://4.bp.blogspot.com/-w4oTZjlpgwo/T5_pi-KJPuI/AAAAAAAAAoM/rKm3E0XCbgY/s1600/red_rose_flower3.jpg"];// pass your link here with your image name

    NSLog(@"URL:%@", sUrl);
   NSString *protectedUrl = ( NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,( CFStringRef)sUrl, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
    NSLog(@"Protected URL:%@", protectedUrl);
    NSString *imageUrl = [NSString stringWithFormat:@"\"%@\"", sUrl];
    NSString *buttonUrl = [NSString stringWithFormat:@"\"http://pinterest.com/pin/create/button/?url=www.flor.com&media=%@&description=%@\"", protectedUrl, description];

    NSMutableString *htmlString = [[NSMutableString alloc] initWithCapacity:1000];
    [htmlString appendFormat:@"<html> <body>"];
    [htmlString appendFormat:@"<p align=\"center\"><a href=%@ class=\"pin-it-button\" count-layout=\"horizontal\"><img border=\"0\" src=\"http://assets.pinterest.com/images/PinExt.png\" title=\"Pin It\" /></a></p>", buttonUrl];
    [htmlString appendFormat:@"<p align=\"center\"><img width=\"400px\" height = \"400px\" src=%@></img></p>", imageUrl];
    [htmlString appendFormat:@"<script type=\"text/javascript\" src=\"//assets.pinterest.com/js/pinit.js\"></script>"];
    [htmlString appendFormat:@"</body> </html>"];
    return htmlString;
}

- (void) postToPinterest {
    NSString *htmlString = [self generatePinterestHTML];
    NSLog(@"Generated HTML String:%@", htmlString);
    webViewPinterest.backgroundColor = [UIColor clearColor];
    webViewPinterest.opaque = NO;
    if ([webViewPinterest isHidden]) {
        [webViewPinterest setHidden:NO];
    }
    [webViewPinterest loadHTMLString:htmlString baseURL:nil];
    //[webViewPinterest loadHTMLString:@"<img src=images.png>" baseURL:nil];
}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    return YES;
}

- (void)webViewDidStartLoad:(UIWebView *)webView {
    [busyIndicator startAnimating];
}

-(void)webViewDidFinishLoad:(UIWebView *)webView {
    [busyIndicator stopAnimating];
}
于 2013-02-08T09:46:37.020 に答える
7

回答を投稿する前に、サーバーに画像を投稿しないとアプリから直接ローカル画像をピンタレストに投稿できないことを教えてくれた @Sudha に特に感謝します。したがって、サーバーに画像を投稿し、適切なURLアドレスをpinitボタンに割り当てたときに、この方法でアイデアを移行すると、うまくいきました。乾杯!iOS アプリと pinterest の統合について検索を開始したとき、この点に関するヘルプや資料はほとんど見つかりませんでした。ほとんどの開発者がこの方法を使用したと思いますが、上記の方法を使用すると、ローカル アプリの画像が pinterest に投稿されませんでした。最後に、ピンタレストでアプリからローカル画像を投稿する可能性が最も高い人のために、私の回答を投稿したいと思います。

手順

  1. 新しいクラス WebViewController を作成し、次のものを追加します。

    #import <UIKit/UIKit.h>
    
    @interface WebViewController : UIViewController
    {
     IBOutlet UIActivityIndicatorView *UIHelper;
     IBOutlet UIWebView *mywebview;
     UIImage *mypimage;
     }
     @property(nonatomic,retain)UIActivityIndicatorView *UIHelper;
     @property(nonatomic,retain)UIWebView *mywebview;
     @property(nonatomic,retain) UIImage *mypimage;
     -(IBAction)closeClicked:(id)sender ;
     @end
    
  2. 今 WebViewController.m ファイル コード

    #import "WebViewController.h"
    
    @interface WebViewController ()
    
    @end
    
     @implementation WebViewController
     @synthesize UIHelper,mypimage,mywebview;
     NSString *username;
    
    -(IBAction)closeClicked:(id)sender {
     [self dismissModalViewControllerAnimated:YES];
     }
     - (void)webViewDidStartLoad:(UIWebView *)webView {
       [UIHelper startAnimating];
       }
    -(void)webViewDidFinishLoad:(UIWebView *)webView {
     [UIHelper stopAnimating];
      }
    - (void)viewDidLoad
     {
       username = @"j&D";
    [username retain];
    
    NSData *imageData = UIImageJPEGRepresentation(mypimage, 90);
    NSString *urlString = @"ServerURl/cap.php";
    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    [request setURL:[NSURL URLWithString:urlString]];
    [request setHTTPMethod:@"POST"];
    NSString *boundary = @"---------------------------14737809831466499882746641449";
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"];
    NSMutableData *body = [NSMutableData data];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@.jpg\"\r\n",username] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[NSData dataWithData:imageData]];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [request setHTTPBody:body];
    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
        NSLog(@"serverurl :%@",returnString);
    
        NSString *htmlString = [self generatePinterestHTML];
        NSLog(@"Generated HTML String:%@", htmlString);
        mywebview.backgroundColor = [UIColor clearColor];
        mywebview.opaque = NO;
        if ([mywebview isHidden]) {
        [mywebview setHidden:NO];
        }
        [mywebview loadHTMLString:htmlString baseURL:nil];
         [super viewDidLoad];
         }
        - (NSString*) generatePinterestHTML {
          NSString *description = @"Post your description here";
          NSString *sUrl = [NSString stringWithFormat:@"SerVerUrl/cap/j&D.jpg"];
          NSLog(@"URL:%@", sUrl);
          NSString *protectedUrl = ( NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,( CFStringRef)sUrl, NULL, (CFStringRef)@"!'\"();:@&=+$,/?%#[]% ",CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
          NSLog(@"Protected URL:%@", protectedUrl);
          NSString *imageUrl = [NSString stringWithFormat:@"\"%@\"", sUrl];
          NSString *buttonUrl = [NSString stringWithFormat:@"\"http://pinterest.com/pin/create/button/?url=www.flor.com&media=%@&description=%@\"", protectedUrl, description];
    
           NSMutableString *htmlString = [[NSMutableString alloc] initWithCapacity:1000];
           [htmlString appendFormat:@"<html> <body>"];
           [htmlString appendFormat:@"<p align=\"center\"><a href=%@ class=\"pin-it-button\" count-layout=\"horizontal\"><img border=\"0\" src=\"http://assets.pinterest.com/images/PinExt.png\" title=\"Pin It\" /></a></p>", buttonUrl];
           [htmlString appendFormat:@"<p align=\"center\"><img width=\"400px\" height = \"400px\" src=%@></img></p>", imageUrl];
           [htmlString appendFormat:@"<script type=\"text/javascript\" src=\"//assets.pinterest.com/js/pinit.js\"></script>"];
           [htmlString appendFormat:@"</body> </html>"];
            return htmlString;
           }
          @end
    
  3. ユーザーが「Pinit」ボタンをタップしたときに呼び出すメソッドを作成します。これにより、投稿する画像とその webView が表示され、UIWebView の「Pinit」ボタンが表示されます。これは私のコードです:

     -(void)pInterest
     {
       UIImage *myImage;
       myImage=imgView.image;
       WebViewController *webViewController = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:nil];
       webViewController.mypimage = myImage;
       [[[[UIApplication sharedApplication] keyWindow] rootViewController] presentModalViewController:webViewController animated:YES];
    }
    

    注:上記のコードで、SerVerUrl を自分のサーバーの URL に置き換えます。

説明をより明確にするために、発生する可能性のあるあいまいさや誤解を取り除くために、最後にいくつかのスクリーンショットを提供しました.

ここに画像の説明を入力ここに画像の説明を入力ここに画像の説明を入力

どんな質問でも、お気軽にコメントしてください!

于 2013-02-10T08:35:22.867 に答える
0

Pinterest iOS SDKを使用できます

Pinterest *_pinterest = [[Pinterest alloc] initWithClientId:pinterestKey];
[_pinterest createPinWithImageURL:@"http://placekitten.com/500/400"
                        sourceURL:@"http://placekitten.com"
                        description:@"Pinning from Pin It Demo"];

ただし、これを行うには、デバイスに Pinterest アプリが必要です。

于 2014-02-18T11:22:05.297 に答える