Guten morgen!
Das neue Forum sieht schick aus, habe geflattert.
Ich entwickle ein Wortspiel für iOS.
In der App habe ich ein UIScrollView mit einem UIImageView das ein Spielbrett-Bild enthält.
Unter dem Spiel habe ich 7 UIViews die aufs UIScrollView gezogen werden sollen.
Das UIScrollView kann man zoomen - mit double tap und pinch Gesten:
[Blockierte Grafik: http://i.stack.imgur.com/2wjue.png]
Das Ziehen von Spielsteinen habe ich mit hilfe von touchesMoved implementiert, in der Tile.m Datei.
In der touchesEnded poste ich dann eine Notification, die vom ViewController.m aufgefangen wird:
- (void) handleTileMoved:(NSNotification*)notification {
Tile* tile = (Tile*)notification.object;
if (tile.superview != _scrollView && CGRectIntersectsRect(tile.frame, _scrollView.frame)) {
[tile removeFromSuperview];
[_scrollView addSubview:tile];
} else if (tile.superview == _scrollView && !CGRectIntersectsRect(tile.frame, _scrollView.frame)) {
[tile removeFromSuperview];
[self.view addSubview:tile];
[self adjustFrames];
}
}
Es funktioniert einigermassen, habe allerdings 2 Probleme:
[Blockierte Grafik: http://i.stack.imgur.com/Hlp8a.png]
Problem 1:
Wie kann man denn die Position und Grösse eines neuplatzierten Spielsteins berechnen?
Gibt es in iOS komfortable Funktionen dafür oder muss ich das mühsam aus contentOffset und zoomScale des UIScrollViews berechnen?
Und wie soll ich am besten die Grösse eines Spielsteins setzen - seine frame mit CGMakeRect setzen oder
tile.transform = CGAffineTransformMakeScale(newScale, newScale);
aufrufen?
Problem 2:
Wenn ich UIImageView mit zwei Fingern oder Double-Tap zoome, wird nur das Spielbrett vergrössert und nicht die daraufliegende Spielsteine.
Das liegt wahrscheinlich an der folgenden Funktion?
- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView
{
return _imageView;
}
Wie kann ich das umgehen, kann ja oben nicht mehrere Objekte zurückgeben?
Grüsse aus Bochum
Alex
Das neue Forum sieht schick aus, habe geflattert.
Ich entwickle ein Wortspiel für iOS.
In der App habe ich ein UIScrollView mit einem UIImageView das ein Spielbrett-Bild enthält.
Unter dem Spiel habe ich 7 UIViews die aufs UIScrollView gezogen werden sollen.
Das UIScrollView kann man zoomen - mit double tap und pinch Gesten:
[Blockierte Grafik: http://i.stack.imgur.com/2wjue.png]
Das Ziehen von Spielsteinen habe ich mit hilfe von touchesMoved implementiert, in der Tile.m Datei.
In der touchesEnded poste ich dann eine Notification, die vom ViewController.m aufgefangen wird:
- (void) handleTileMoved:(NSNotification*)notification {
Tile* tile = (Tile*)notification.object;
if (tile.superview != _scrollView && CGRectIntersectsRect(tile.frame, _scrollView.frame)) {
[tile removeFromSuperview];
[_scrollView addSubview:tile];
} else if (tile.superview == _scrollView && !CGRectIntersectsRect(tile.frame, _scrollView.frame)) {
[tile removeFromSuperview];
[self.view addSubview:tile];
[self adjustFrames];
}
}
Es funktioniert einigermassen, habe allerdings 2 Probleme:
[Blockierte Grafik: http://i.stack.imgur.com/Hlp8a.png]
Problem 1:
Wie kann man denn die Position und Grösse eines neuplatzierten Spielsteins berechnen?
Gibt es in iOS komfortable Funktionen dafür oder muss ich das mühsam aus contentOffset und zoomScale des UIScrollViews berechnen?
Und wie soll ich am besten die Grösse eines Spielsteins setzen - seine frame mit CGMakeRect setzen oder
tile.transform = CGAffineTransformMakeScale(newScale, newScale);
aufrufen?
Problem 2:
Wenn ich UIImageView mit zwei Fingern oder Double-Tap zoome, wird nur das Spielbrett vergrössert und nicht die daraufliegende Spielsteine.
Das liegt wahrscheinlich an der folgenden Funktion?
- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView
{
return _imageView;
}
Wie kann ich das umgehen, kann ja oben nicht mehrere Objekte zurückgeben?
Grüsse aus Bochum
Alex
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von afarber ()