Je veux montrer une image (plus grande que l'écran de l'iphone), que l'utilisateur peut faire défiler. est-ce pas difficoult, je l'ai fait avec ce code: dans mon fichier .hUIButton sur UIImageView (sur UIScrollView)
@interface mappa1 : UIViewController <UIScrollViewDelegate> {
IBOutlet UIImageView *img;
IBOutlet UIScrollView *scroller;
}
dans mon fichier .m
UIImage *image = [UIImage imageNamed:@"prova.jpg"];
img = [[UIImageView alloc] initWithImage:image];
scroller.delegate = self;
scroller.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
scroller.contentSize = img.frame.size;
scroller.scrollEnabled = YES;
scroller.directionalLockEnabled = NO;
scroller.userInteractionEnabled = YES;
CGSize ivsize = img.frame.size;
CGSize ssize = scroller.frame.size;
float scalex = ssize.width/ivsize.width;
float scaley = ssize.height/ivsize.height;
scroller.maximumZoomScale = 1.0;
scroller.minimumZoomScale = fmin(1.0, fmax(scalex, scaley));
scroller.zoomScale = fmin(1.0, fmax(scalex, scaley));
[scroller addSubview:img];
et
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return img;
}
et tout fonctionne bien!
Maintenant, je veux ajouter un UIButton sur l'UIImage, pas sur l'UIView, parce que je veux que si l'utilisateur zoome ou déplace l'image, l'uibutton suit le mouvement/zoom de l'image ui.
J'ajoute donc ce code:
UIButton *btn = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
btn.frame = CGRectMake(0, 0, 100, 25);
[btn setTitle:@"Play" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
[img addSubview:btn];
mais le UIButton est "non-cliquables"! Bien sûr, UIView et UIImageView ont la valeur UserInteractionEnabled sur YES!
Merci!
EDIT: si j'écris
[scroller addSubView:btn];
cela fonctionne, mais, bien sûr, si le zoom utilisateur/arrière, le UIButton est toujours grand 100x25.
Il y a une propriété de scrollViews "contenu résiliables Touches". Vous pouvez le trouver dans l'inspecteur d'attributs dans IB. Décochez cette option et essayez. –
merci mais non, ça ne marche pas! De plus, si je désélectionne "cancell contenu content", le zoom ne fonctionne pas! – JAA
Vous devrez peut-être implémenter le redimensionnement manuellement pour le bouton en fonction du niveau de zoom sur l'UIImage. Donc, chaque fois que quelqu'un zoome sur l'image, vous ajustez la taille du bouton. – Cyprian