2009-10-16 7 views
3

hey les gars, ceci est mon premier poste ici, et im assez nouveau pour la programmation iphone. Je viens de commencer il ya environ un mois et j'ai seulement bricoler avec de petites applications de type tutoriel mais de toute façon, voici ma questionUIButtons sur un UIImageView Zoom

J'ai actuellement un UIScrollView thats scrollable et zoomable, qui charge une sous-vue UIImageView, et je veux ajouter dans certains les commandes (UIButtons) sur la vue de l'image mais quand je zoome et déleste tout le groupe (les boutons et l'image) zoomer vers le bas.

si j'ajouter les UIButtons à mon UIScrollView et le zoom, l'image zooms et les boutons restent en place d'origine

si j'ajouter les UIButtons à mon UIImageView ils zoom correctement, mais les boutons ne coûtent pas plus. IE ils perdent leur interactivité.

plus tard, ajoutez beaucoup de boutons dans un tableau et ajoutez-les.

je serais reconnaissant de toute l'aide que je peux obtenir

cela fait partie de mon 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

Il n'est pas clair ce que vous voulez arriver. Voulez-vous que les boutons soient zoomés et restent fonctionnels? Les boutons zooment avec le scrollview, ou la sous-vue? Les boutons ne zooment pas du tout? – mikestew

+0

désolé pour ne pas être clair, je veux mes boutons pour zoomer avec mon image de fond à la même échelle, et rester fonctionnel – Hunter

+1

Salut, avez-vous trouvé une solution pour cela? Même moi je suis confronté à ce problème. Les événements du bouton ne se déclenchent pas après le zoom – lostInTransit

Répondre

0

Cela pourrait ne pas aider et il est pas ce qu'il semble que vous voulez faire. Cependant, lorsque je veux des boutons associés à une vue défilante, j'ajoute une vue parente, j'ajoute les boutons à cette vue et j'ajoute aussi la vue défilante à cette vue. Le bouton (s) et le scrollview seraient frères et soeurs. Cela permet à l'utilisateur de faire défiler le contenu du scrollview, tout en s'assurant que les boutons sont toujours visibles.

-isdi-

0

Par défaut, UIImageView a userInteraction désactivé. Avez-vous changé cela?

En outre, je serais vraiment mal à l'aise d'ajouter des sous-vues à un UIImageView, il est vraiment destiné à contenir une image. Il vaudrait mieux créer un UIView normal et ajouter les UIButtons et UIImageView à cela. Il est très facile de contrôler la commande de sorte que les boutons apparaissent au-dessus de l'image.

P.S. Juste pour vous rendre la vie plus facile, au lieu de:

[scrollView2 setContentSize:CGSizeMake(scroll2ImageView.frame.size.width, scroll2ImageView.frame.size.height)]; 

Vous pouvez utiliser:

[scrollView2 setContentSize:scroll2ImageView.frame.size]; 
0

Faire une seule vue pour contenir tous vos contenus zoomable (de tout ce qu'il semble), et appelez-dire contentView . Maintenant, placez tout ce que vous voulez dans ce contentView, l'imageView et tous vos boutons, etc.

Dans votre délégué UIScrollView lieu ceci: (Assurez-vous de définir si vous avez pas déjà le délégué du ScrollView)

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { 
    return self.contentView; 
} 

Une seule vue est autorisé à effectuer un zoom, mais un point de vue peut cependant contenir d'autres vues cela va évoluer parce que ce sont des vues d'enfants.

Veillez également à définir la valeur contentSize de la propriété scrollView sur la taille exacte de votre contenu zoomable.