在UIImageView Zooming上的UIButtons

时间:2009-10-16 19:55:08

标签: iphone xcode uiscrollview uiimageview uibutton

嘿伙计们,这是我第一次在这里发帖,而且我对iphone编程很新。我刚刚开始大约一个月前,只是修补了小型教程类型的应用程序,但无论如何,继承人我的问题

我目前有一个可滚动和可缩放的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];

}

3 个答案:

答案 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值设置为可缩放内容视图的确切大小。