就像你在我的代码中看到的那样,我会截取屏幕截图并将其保存到相册中.
//for retina displays
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
} else {
UIGraphicsBeginImageContext(self.view.bounds.size);
}
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
Run Code Online (Sandbox Code Playgroud)
一开始我使用webview.size而不是self.view.bounds.size它,它工作正常,因为视图位于0/0.但现在我将WebView集中在一起0/0,但图片是从给定大小开始的.
如何配置屏幕截图从另一个location(例如300/150)开始给定大小?
还是有另一种方式拍摄一张照片UIWebView吗?
我想在第二个视图中以编程方式单击navigationBar中的后退按钮.这是这样称呼的:
Archiv *archiv = [[Archiv alloc] initWithNibName:@"Archiv" bundle:nil];
archiv.title = [NSString stringWithFormat:@"Archiv %@", [sender titleForState:UIControlStateNormal]];
[self.navigationController pushViewController:archiv animated:YES];
Run Code Online (Sandbox Code Playgroud)
现在我在Archiv.m并且在特定事件之后我想回到第一个控制器(没有单击后退按钮) - 而是我想以编程方式执行单击.
这种情况有可能吗?
如果我单击此按钮,将有助于知道调用哪种方法,所以甚至不必执行单击.
下面的代码显示了一个标签动画,其中包含用户的状态消息.如果事件发生,标签显示提示,并通过uiview动画块慢慢消失.
- (void)showStatusOnLabelWithString:(NSString *)statusMessage
{
// [self.view.layer removeAllAnimations]; // not working
[labelStatus.layer removeAllAnimations]; // not working, too
[labelStatus setText:statusMessage];
[labelStatus setHidden:NO];
[labelStatus setAlpha:1.0];
[UIView animateWithDuration:5.0 animations:^
{
[labelStatus setAlpha:0.0];
} completion:^(BOOL finished)
{
[labelStatus setHidden:YES];
[labelStatus setAlpha:1.0];
}];
}
Run Code Online (Sandbox Code Playgroud)
如果在第一个标签应该再次动画之后的下一个5s中有另一个事件,那么我删除了上一个动画[self.view.layer removeAllAnimations](这就是我的想法).但标签刚刚完全消失,接下来的5s标签再次看不见.
如果我(或用户)等待5s一切正常.
为什么这不起作用?
亲切的问候,$ h @ rky