Как перетащить и отцентрировать изображение между UIImageViews? - PullRequest
0 голосов
/ 30 марта 2012

Я хотел бы знать, существует ли способ перетаскивания изображений между UIImageViews, чтобы при перетаскивании изображения из одного UIImageView оно отображалось по центру в следующем UIImageView.

Я делаюочень маленькое шахматное приложение, которое я разрабатываю просто для удовольствия :) У меня есть простая настройка: фон доски и UIImageView для всех ячеек.До сих пор мне удавалось успешно перетаскивать изображения с доски с помощью UITouch и CGPoint.Моя проблема в том, что я могу перетаскивать эти изображения в любое место моего приложения;то есть друг над другом, между ячейками, на полпути за пределами доски и т. д., так что это определенно какая-то проблема границы.

Мой код для обработки событий перетаскивания:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [[event allTouches] anyObject];

    CGPoint touchLocation = [touch locationInView:[self view]];   

    for (UIImageView *piece in chessCells) {
        if([touch view] == piece){
            piece.center = touchLocation;
        }
    }

}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    [self touchesBegan:touches withEvent:event];
}

О цикле for: Все ячейки на моей доске - это пустые IBOutlets с UIImageViews, которые я организую, храня их в NSArray, называемом chessCells.У меня есть метод, который отображает изображения в соответствующих ячейках при запуске приложения.С этого момента я смогу схватить их и свободно перемещать по шахматной доске ... но, как я обнаружил, слишком свободно.

Я читал множество форумов и проходил черезмножество учебных пособий, а также онлайн-документация, поэтому я многому учусь, потому что извиняюсь за недостаток опыта.

Любая помощь будет принята с благодарностью:)

1 Ответ

1 голос
/ 30 марта 2012

Вы должны попробовать с помощью CGRectIntersectRect добавить это в свой код

if (CGRectIntersectsRect(yourImgFrame1, yourImgFrame2)) {
    //do What ever you want
}

с этим кодом, когда ваш yourImgFrame1 пересекается yourImgFrame2 вы можете выполнить любое действие

Удачи

...