【发布时间】:2023-03-20 02:21:02
【问题描述】:
我正在使用 UIScrollview 缩放图像..我的 UIScrollview 大小是固定的,所以每当我缩放图像时它就会被剪切..我想这样做,因为我缩放图像时 UIScrollview 也会增加高度和宽度根据图像缩放.. 任何建议将不胜感激......
【问题讨论】:
标签: iphone objective-c uiscrollview zooming
我正在使用 UIScrollview 缩放图像..我的 UIScrollview 大小是固定的,所以每当我缩放图像时它就会被剪切..我想这样做,因为我缩放图像时 UIScrollview 也会增加高度和宽度根据图像缩放.. 任何建议将不胜感激......
【问题讨论】:
标签: iphone objective-c uiscrollview zooming
这应该可行:-)
viewForZoomingInScrollView中的UIimageView
把它放到你的 .h 文件中:
UIImageView *imageView;
@property (nonatomic, retain) UIImageView *imageView;
并且记得合成发布imageView
把它放在你想要滚动视图的地方:
UIImage *image = [UIImage imageNamed:@"myImage.jpg"];
imageView = [[UIImageView alloc] initWithImage:image];
[imageView setFrame:CGRectMake(0, 0, image.size.width, image.size.height)];
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[scrollView setMinimumZoomScale:0.5];
[scrollView setMaximumZoomScale:3.0];
[scrollView setContentSize:CGSizeMake(image.size.width, image.size.height)];
[scrollView setDelegate:self];
[scrollView addSubview:imageView];
[[self view] addSubview:scrollView];
[scrollView release];
添加 UIScrollView 委托方法
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return imageView;
}
更新:
我在添加上述解决方案时误解了这个问题。应该这样做:-)
kScrollViewAddSize 是一个常量,它定义了要添加到 UIScrollView 大小的数量。
在您的 .h 文件中,您应该添加以下内容:
UIImageView *imageView;
UIScrollView *scrollView;
记得合成并释放它们。
- (void)viewDidLoad
{
[super viewDidLoad];
UIImage *image = [UIImage imageNamed:@"apple.jpg"];
imageView = [[UIImageView alloc] initWithImage:image];
[imageView setFrame:CGRectMake(kScrollViewAddSize / 2, kScrollViewAddSize / 2, image.size.width, image.size.height)];
int width = imageView.frame.size.width + kScrollViewAddSize;
int height = imageView.frame.size.height + kScrollViewAddSize;
scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake((self.view.frame.size.width - width) / 2, (self.view.frame.size.height - height) / 2, width, height)];
[scrollView setMinimumZoomScale:0.5];
[scrollView setMaximumZoomScale:3.0];
[scrollView setBackgroundColor:[UIColor redColor]];
[scrollView setContentSize:CGSizeMake(image.size.width, image.size.height)];
[scrollView setDelegate:self];
[scrollView addSubview:imageView];
[[self view] addSubview:scrollView];
}
- (void)scrollViewDidZoom:(UIScrollView *)_scrollView {
int width = imageView.frame.size.width + kScrollViewAddSize;
int height = imageView.frame.size.height + kScrollViewAddSize;
[scrollView setFrame:CGRectMake((self.view.frame.size.width - width) / 2, (self.view.frame.size.height - height) / 2, imageView.frame.size.width + kScrollViewAddSize, imageView.frame.size.height + kScrollViewAddSize)];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)_scrollView {
return imageView;
}
在viewDidLoad 中添加要创建 UIScrollView 的部分并添加两个委托方法。
【讨论】: