小编car*_*ton的帖子

使用snapshotViewAfterScreenUpdates创建的UIView的UIImage:

是否有可能从创建的UIView获取UIImage snapshotViewAfterScreenUpdates

snapshotViewAfterScreenUpdates当作为子视图添加时,UIView返回看起来很好,但是下面会产生一个黑色图像:

UIView *snapshotView = [someView snapshotViewAfterScreenUpdates:YES]; 
UIImage *snapshotImage = [self imageFromView:snapshotView]; 

- (UIImage *)imageFromView:(UIView *)view
{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0.0);
    // [view.layer renderInContext:UIGraphicsGetCurrentContext()]; // <- same result...
    [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return img;
}
Run Code Online (Sandbox Code Playgroud)

当然可以在不依赖的情况下获取图像snapshotViewAfterScreenUpdates:

UIImage *snapshotImage = [self imageFromView:someView];
Run Code Online (Sandbox Code Playgroud)

不幸的是,在捕捉复杂视图时,drawViewHierarchyInRect速度无法与之匹敌snapshotViewAfterScreenUpdates.我希望UIImage从创建的视图中获取它会更快snapshotViewAfterScreenUpdates,这可能吗?

screenshot snapshot uiview uiimage ios7

25
推荐指数
1
解决办法
2万
查看次数

跟踪MKMapView的centerCoordinate

我需要准确地跟踪centerCoordinateMKMapView同时用户放大/平移的地图,即,之间的regionWillChangeAnimated:regionDidChangeAnimated:事件.

我通过尝试锁定MKAnnotation地图的中心来测试以下方法.不幸的是,它们都不能很好地运作:

  • 使用UIPanGestureRecognizer(如描述这里):这个工作得很好,而显示器被触摸,但在地图上是动画的触摸手势完成后不更新.此外,更新滞后于实际centerCoordinate.

  • 使用UIScrollViewDelegateI 子类化MKMapView来接收scrollViewDidScroll:事件.这很有效,但是每次滚动增量都不会触发事件,从而导致生涩的更新.

  • 使用KVO通知:按照这种模式,我试着观察mapview的centerCoordinate.它适用于userLocation,但似乎没有发送通知centerCoordinate.

有关如何centerCoordinate有效准确跟踪的任何想法?

KVO似乎是最好的选择.有没有窍门,以使其与工作MKMapViewcenterCoordinate性质?

tracking key-value-observing mkmapview ios

10
推荐指数
1
解决办法
789
查看次数