我在UIScrollView中有一个UIImageView,在scrollView中启用了缩放功能。我想要的是如果用户放大图像的特定区域,然后返回,滚动视图将图像设置在任何地方。我尝试过使用内容偏移,但它并不适用于所有缩放级别。在缩放级别1的情况下,imageView类型粘在scrollView的左侧。这是我用来保存contentOffset和zoomScale的代码。
-(void)saveContentOffset
{
NSInteger zoomValue=[Scroll zoomScale];
CGPoint offeset=[Scroll contentOffset];
NSMutableDictionary *dict=[[NSMutableDictionary alloc] init];
[dict setObject:[NSNumber numberWithInteger:offeset.x] forKey:@"X"];
[dict setObject:[NSNumber numberWithInteger:offeset.y] forKey:@"Y"];
[dict setObject:[NSNumber numberWithInteger:zoomValue] forKey:@"Zoom"];
[[NSUserDefaults standardUserDefaults] setObject:dict forKey:@"Dict"];
}
此代码用于在用户返回屏幕时设置contentOffset:
-(void)setContentOffsetForScroll
{
NSDictionary *dict=[[NSUserDefaults standardUserDefaults] objectForKey:@"Dict"];
if ([dict allKeys]>0)
{
NSInteger xPoint=[[dict valueForKey:@"X"] integerValue];
NSInteger yPoint=[[dict valueForKey:@"Y"] integerValue];
NSInteger zoomScale=[[dict valueForKey:@"Zoom"] integerValue];
CGPoint offsetPoint=CGPointMake(xPoint, yPoint);
[Scroll setZoomScale:zoomScale];
[Scroll setContentOffset:offsetPoint];
}
}
在zoomLevel 1的情况下,请检查附图中的问题,使用greenColor的背景视图是ScrollView。在这种情况下,内容设置为左。
请说明我错过了什么。
谢谢!
答案 0 :(得分:0)
您可以使用此
保存图像视图的原点x = imageview.frame.origin.x和y = imageview.frame.origin.y
然后当你回到同一个视图时
使用它 CGRect * rect = imageview.frame; rect.origin.x = x; //来自先前存储的值 rect.origin.y = y; //来自先前存储的值 imageview.frame = RECT;
答案 1 :(得分:0)
不要保存单独的X,Y和缩放参数。相反,请保存UIScrollView.bounds
,然后将其传递给-[UIScrollView zoomToRect:animated:]
。
P.S。作为编码风格的问题,为了使您的代码对现有的Objective-C程序员可读,请不要使用大写字母作为变量名;它们用于类名。
答案 2 :(得分:0)
-(void)saveContentOffset
{
CGFloat zoomValue=[Scroll zoomScale];
CGPoint offeset=[Scroll contentOffset];
NSMutableDictionary *dict=[[NSMutableDictionary alloc] init];
[dict setObject:[NSNumber numberWithInteger:offeset.x] forKey:@"X"];
[dict setObject:[NSNumber numberWithInteger:offeset.y] forKey:@"Y"];
[dict setObject:[NSNumber numberWithfloat:zoomValue] forKey:@"Zoom"];
[[NSUserDefaults standardUserDefaults] setObject:dict forKey:@"Dict"];
}
-(void)setContentOffsetForScroll
{
NSDictionary *dict=[[NSUserDefaults standardUserDefaults] objectForKey:@"Dict"];
if ([dict allKeys]>0)
{
NSInteger xPoint=[[dict valueForKey:@"X"] integerValue];
NSInteger yPoint=[[dict valueForKey:@"Y"] integerValue];
NSInteger zoomScale=[[dict valueForKey:@"Zoom"] floatValue];
CGPoint offsetPoint=CGPointMake(xPoint, yPoint);
[Scroll setZoomScale:zoomScale];
[Scroll setContentOffset:offsetPoint];
}
}