2

こんにちは、アプリケーションが自動的にスクリーンショットを撮る必要がある iPad アプリを開発しています。画像は、デバイスにある現在の日付と現在の時刻を含む長いスクリーン名で保存する必要があります。誰か私がこれをするのを手伝ってください。

次のコードを試しました。そのコードではスクリーンショットが撮られ、そのビューのラベルに名前が出力されます。しかし、ラベルの時間は正確ではないので、時間で追加されたスクリーン名の名前で画像を保存したいと思います。

        //-- Screen Capture --------------------------------------------------------------------//

UIImage *image = nil;

UIGraphicsBeginImageContext(loginBgImgVw.frame.size);

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM-dd-yyyy HH:MM:SS"];
[formatter setTimeZone:[NSTimeZone localTimeZone]];

NSString *dateToday = [formatter stringFromDate:[NSDate date]];

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 600, 44)];
[label setText:dateToday];
NSString *fileNameStr = [NSString stringWithFormat:@"%@_Login_%@",providerIdStr,dateToday];

[label setText:fileNameStr];
label.backgroundColor = [UIColor clearColor];
[loginBgImgVw addSubview:label];
[formatter release];


[loginBgImgVw.layer renderInContext: UIGraphicsGetCurrentContext()];     
image = UIGraphicsGetImageFromCurrentImageContext();        
UIGraphicsEndImageContext();        

//=--

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docspath = [paths objectAtIndex:0];
NSLog(@"path=--%@",paths);

NSString *dataPath = [docspath stringByAppendingPathComponent:[NSString stringWithFormat:@"ProviderID_%@",providerIdStr]];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
{
    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:nil];
}

NSString *savedImagePath = [dataPath stringByAppendingPathComponent:@"Login_Provider.png"];
NSData *imageData = UIImageJPEGRepresentation(image, 0.2);
[imageData writeToFile:savedImagePath atomically:NO];

UIImageWriteToSavedPhotosAlbum(image,self,@selector(image:didFinishSavingWithError:contextInfo:),NULL);

//--------------------------------------------------------------------------------------//
4

1 に答える 1

2

日付フォーマッタを次のように変更する必要があります。

[formatter setDateFormat:@"MM-dd-yyyy HH:mm:ss"];

MM月とmm分を表すためのものです。

于 2012-11-28T08:06:41.427 に答える