Iphone 放大UIScrollView时出现问题?
在我的应用程序中,我在UIScrollView中使用了UIImageView,并为此使用了代码Iphone 放大UIScrollView时出现问题?,iphone,Iphone,在我的应用程序中,我在UIScrollView中使用了UIImageView,并为此使用了代码 - (void)viewDidLoad { scrollV.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height); [super viewDidLoad]; } - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scr
- (void)viewDidLoad
{
scrollV.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height);
[super viewDidLoad];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return imageView;
}
代码工作正常,但当我将UIButton放在scrollView的imageView上并缩放scrollV后,imageView会根据scrollView进行完美缩放,但UIButton不会被缩放
我希望在缩放imageview时,我在imageview上放置的按钮也可以相对于缩放的imageview进行缩放 创建一个代理UIView实例作为scrollview的子视图,并放置所有要放大的UI元素。然后从
viewForZoomingInScrollView
methodcgsizeimageview=[photo size]返回该视图;
CGSize imageView = [photo size];
UIScrollView *scrollView = (UIScrollView *)[self view];
[scrollView setDelegate:self];
[scrollView setContentSize:photoSize];
[scrollView setBackgroundColor:[UIColor blackColor]];
[scrollView setShowsHorizontalScrollIndicator:NO];
[scrollView setShowsVerticalScrollIndicator:NO];
// Create the image view.
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, photoSize.width, photoSize.height)];
[imageView setImage:photo];
[scrollView addSubview:imageView];
// Configure zooming.
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
CGFloat widthRatio = screenSize.width / photoSize.width;
CGFloat heightRatio = screenSize.height / photoSize.height;
CGFloat initialZoom = (widthRatio > heightRatio) ? heightRatio : widthRatio;
[scrollView setMaximumZoomScale:3.0];
[scrollView setMinimumZoomScale:initialZoom];
[scrollView setZoomScale:initialZoom];
[scrollView setBouncesZoom:YES];
// Center the photo.
CGFloat topInset = (screenSize.height - photoSize.height * initialZoom) / 2.0;
if (topInset > 0.0)
{
[scrollView setContentInset:UIEdgeInsetsMake(topInset - 44.0, 0.0, 0.0, 0.0)];
}
}
#pragma mark -
#pragma mark UIScrollViewDelegate
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return imageView;
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
CGSize photoSize = [photo size];
CGFloat topInset = (screenSize.height - photoSize.height * [scrollView zoomScale]) / 2.0;
if (topInset < 0.0)
{
topInset = 0.0;
}
[scrollView setContentInset:UIEdgeInsetsMake(topInset, 0.0, -topInset, 0.0)];
}
UIScrollView*滚动视图=(UIScrollView*)[self-view];
[scrollView setDelegate:self];
[scrollView setContentSize:photoSize];
[scrollView setBackgroundColor:[UIColor blackColor]];
[滚动视图设置ShowShorizontalsCrollinIndicator:否];
[滚动视图设置显示垂直滚动指示器:否];
//创建图像视图。
imageView=[[UIImageView alloc]initWithFrame:CGRectMake(0.0,0.0,photoSize.width,photoSize.height)];
[图像视图设置图像:照片];
[滚动视图添加子视图:图像视图];
//配置缩放。
CGSize screenSize=[[UIScreen mainScreen]界限].size;
CGFloat widthRatio=屏幕大小.width/photoSize.width;
CGFloat heightRatio=屏幕大小.height/photoSize.height;
CGFloat initialZoom=(宽度比>高度比)?高度比:宽度比;
[滚动视图设置最大缩放比例:3.0];
[滚动视图设置最小缩放比例:初始缩放];
[滚动视图设置缩放比例:初始缩放];
[滚动视图setBouncesZoom:是];
//将照片居中。
CGFloat topInset=(screenSize.height-photoSize.height*initialZoom)/2.0;
如果(顶部插图>0.0)
{
[scrollView设置内容插图:UIEdgeInsetsMake(顶部插图-44.0,0.0,0.0,0.0)];
}
}
#布拉格标记-
#pragma标记UIScrollViewDelegate
-(UIView*)视图用于缩放CrollView:(UICrollView*)滚动视图
{
返回图像视图;
}
-(无效)scrollViewDidScroll:(UIScrollView*)scrollView
{
CGSize screenSize=[[UIScreen mainScreen]界限].size;
CGSize photoSize=[照片大小];
CGFloat topInset=(screenSize.height-photoSize.height*[scrollView zoomScale])/2.0;
如果(顶部插图<0.0)
{
顶部插图=0.0;
}
[scrollView setContentInset:UIEdgeInsetsMake(topInset,0.0,-topInset,0.0)];
}
我成功地找到了上述问题的答案。我为此编写了
- (void)viewDidLoad
{
bgViewOfImage.contentStretch = CGRectMake(ImageView.frame.origin.x, ImageView.frame.origin.y, ImageView.frame.size.width, ImageView.frame.size.height);
scrollV.contentSize = CGSizeMake(bgViewOfImage.frame.size.width, bgViewOfImage.frame.size.height);
[super viewDidLoad];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return bgViewOfImage;
}
我创建了一个层次结构,在主视图中插入一个UIView,然后在主视图上拖动其他控件,如UIImageview和UIButtons。现在它可以完美地工作并缩放每个控件。@Jacob Relkin,你有什么想法吗?