Mon*_*ona 5 scroll zoom imageview ios
我有一个uiscrollview,里面有一个uiimageview.我希望习惯能够放大图像,因为它是一个很大的图像.scrollview只需要垂直滚动而不是水平滚动.
在添加缩放效果之前,我有以下代码,它按照我的意愿工作,
-(void)viewDidLoad
{
[scrollView setScrollEnabled:YES];
[scrollView setContentSize:CGSizeMake(320, 1690)];
}
Run Code Online (Sandbox Code Playgroud)
所以我做了一些研究,最后得到了以下代码来启用捏缩放,
-(void)viewDidLoad
{
scrollView.scrollEnabled = YES;
[scrollView setContentSize:CGSizeMake(320, 1690)];
scrollView.delegate = self;
// scrollView.contentSize = instImage.frame.size;
scrollView.minimumZoomScale = scrollView.frame.size.width / instImage.frame.size.width;
scrollView.maximumZoomScale = 2.0;
[scrollView setZoomScale:scrollView.minimumZoomScale];
[[NSRunLoop currentRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate distantFuture]];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return instImage;
}
- (CGRect)centeredFrameForScrollView:(UIScrollView *)scroll andUIView:(UIView *)rView {
CGSize boundsSize = scroll.bounds.size;
CGRect frameToCenter = rView.frame;
// center horizontally
if (frameToCenter.size.width < boundsSize.width) {
frameToCenter.origin.x = ((boundsSize.width - frameToCenter.size.width) / 2);
}else {
frameToCenter.origin.x = 0;
}
return frameToCenter;
}
- (void)scrollViewDidZoom:(UIScrollView *)scrollV {
instImage.frame = [self centeredFrameForScrollView:scrollV andUIView:instImage];;
}
Run Code Online (Sandbox Code Playgroud)
现在我有以下问题,我无法弄清楚是什么问题,
当视图刚刚在任何夹点之前加载时,scrollview不会一直滚动到图像的末尾.
当捏合放大时,它会向左和向右滚动并向上和向下滚动图像,但它仍然不会一直向下滚动到图像的末尾,但仍然比它最初在开始时所做的更多.
当我缩小时,整个事情就停止了.你不能放大或缩小,它甚至不再滚动.完全锁定.
我做了一些研究,发现了以下帖子. /sf/answers/446938411/
但我不知道在哪里可以找到NSDefaultRunLoopMode,甚至不知道如何搜索它以确定是否可以解决它.
我终于明白了.此解决方案完美运行!
在你的.h文件中
@interface scrollViewController : UIViewController <UIScrollViewDelegate>{
float oldScale;
IBOutlet UIScrollView *scrollView;
IBOutlet UIImageView *image;
}
@end
Run Code Online (Sandbox Code Playgroud)
然后将图像连接到uiimageview,其中包含要放大和缩小的照片,并且位于滚动视图中.然后将scrollview连接到界面上的uiscrollview.
在.m文件中
@implementation scrollViewController
-(void)viewDidLoad
{
[super viewDidLoad];
scrollView.scrollEnabled = YES;
scrollView.minimumZoomScale=1.0;
scrollView.maximumZoomScale=4.0;
[scrollView setContentSize:CGSizeMake(320, 1700)];
scrollView.delegate=self;
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return image;
}
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollV withView:(UIView *)view atScale:(float)scale
{
[scrollView setContentSize:CGSizeMake(scale*320, scale*1700)];
}
@end
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
11510 次 |
| 最近记录: |