我目前有一个可滚动和可缩放的UIScrollView,它加载一个UIImageView子视图,我想在图像视图上添加一些控件(UIButtons),但当我放大和缩小整个组(按钮和图像) )zoom togeather。
如果我将UIButtons添加到我的UIScrollView并进行缩放,图像会缩放并且按钮会保留在原始位置
如果我将UIButtons添加到我的UIImageView,它们可以正确缩放但不再是按钮。 IE他们失去了互动性。
稍后会将大量按钮添加到数组中并添加它们。
我将不胜感激任何帮助
这是我的mainViewController.m
的一部分- (void)viewDidLoad
{
[scrollView2 setBackgroundColor:[UIColor blackColor]];
[scrollView2 setCanCancelContentTouches:NO];
scrollView2.clipsToBounds = YES; // default is NO, we want to restrict drawing within our scrollview
scrollView2.indicatorStyle = UIScrollViewIndicatorStyleWhite;
scroll2ImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bigNH.jpg"]];
[scrollView2 addSubview:scroll2ImageView];
[scrollView2 setContentSize:CGSizeMake(scroll2ImageView.frame.size.width, scroll2ImageView.frame.size.height)];
scrollView2.minimumZoomScale = .5;
scrollView2.maximumZoomScale = 3;
scrollView2.delegate = self;
[scrollView2 setScrollEnabled:YES];
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
CGRect newSize = CGRectMake(658, 435, 50, 50); // position in the parent view and set the size of the button
myButton.frame = newSize;
[myButton setImage:[UIImage imageNamed:@"redStop.png"] forState:UIControlStateNormal];
// add targets and actions
[myButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
// add to a view
[scroll2ImageView addSubview:myButton];
[redLineArray addObject:myButton];
[scroll2ImageView release];
}
答案 0 :(得分:0)
这可能没有帮助,它不是你想要做的。
但是,当我想要与滚动视图关联的按钮时,我添加父视图,将按钮添加到该视图,并将滚动视图添加到该视图。按钮和滚动视图将是兄弟姐妹。这允许用户滚动滚动视图的内容,同时确保按钮始终在视图中。
-isdi -
答案 1 :(得分:0)
默认情况下,UIImageView禁用了userInteraction。你改变了吗?
另外,我真的很不安地将子视图添加到UIImageView,它真的意味着保存一个图像。最好创建一个普通的UIView并添加UIButtons和UIImageView。控制排序非常容易,因此按钮会出现在图像的顶部。
P.S。只是为了让你的生活更轻松,而不是:
[scrollView2 setContentSize:CGSizeMake(scroll2ImageView.frame.size.width, scroll2ImageView.frame.size.height)];
您可以使用:
[scrollView2 setContentSize:scroll2ImageView.frame.size];
答案 2 :(得分:0)
制作单个视图以包含所有可缩放内容(它将显示的所有内容),并将其称为contentView。现在将您想要的所有内容放在contentView,imageView和所有按钮等中。
在你的UIScrollView委托中放置:(如果你还没有设置,请务必设置scrollView的委托)
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.contentView;
}
只允许一个视图进行缩放,但是一个视图可以包含其他视图,这些视图将缩放,因为它们是子视图。
还要确保将scrollView的contentSize值设置为可缩放内容视图的确切大小。