UIButton не будет менять границы программно - PullRequest
0 голосов
/ 30 декабря 2011

Я делаю игру для iPhone, в которой пользователь выбирает, какого цвета они хотят, чтобы их машина была в игре. Чтобы показать, какие автомобили можно выбрать, у меня есть кнопки UIB с фоновыми изображениями, которые представляют различные автомобили. Чтобы показать, какой автомобиль выбран в данный момент, у меня есть кнопка за текущим цветом автомобиля с желтым фоновым цветом. Я хочу, чтобы при нажатии на кнопку автомобиля желтая кнопка перемещалась за нажатой кнопкой. Мой код выглядит так:

    -(void)setPlayerCar:(UIButton *)newCar{
    //this code is being called when any of the buttons is clicked
    NSArray *carFiles = [NSArray arrayWithObjects:@"redCar.png",@"blueCar.png",@"greenCar.png",@"purpleCar.png",@"turquioseCar.png",@"yellowCar.png", nil];
    NSString *file = [carFiles objectAtIndex:newCar.tag];
    currentCarImage = file;
    CGRect frame;
    if(currentCarImage == @"redCar.png"){
        frame = CGRectMake(48, 78, 30, 30);
    }
    if(currentCarImage == @"blueCar.png"){
        frame = CGRectMake(83, 78, 30, 30);
    }
    if(currentCarImage == @"greenCar.png"){
        frame = CGRectMake(118, 78, 30, 30);
    }
    if(currentCarImage == @"purpleCar.png"){
        frame = CGRectMake(153, 78, 30, 30);
    }
    if(currentCarImage == @"turquioseCar.png"){
        frame = CGRectMake(188, 78, 30, 30);
    }
    if(currentCarImage == @"yellowCar.png"){
        frame = CGRectMake(223, 78, 30, 30);
    }
    for(UIButton *button in self.pauseScroll.subviews){
        if(button.backgroundColor == [UIColor yellowColor]){
           button.bounds = frame;
        }
        if(button.tag == newCar.tag){
           [self.pauseScroll bringSubviewToFront:button];
        }
    }
}

Насколько я знаю, это должно переместить желтую кнопку к выбранной кнопке. Проблема в том, что этого не происходит, когда я отлаживаю, я обнаруживаю, что правильная кнопка распознается, и этому кадру присваивается правильное значение, и что line: button.bounds = frame; выполняется, но когда я смотрю на то, что отображается, ничего не изменилось.

1 Ответ

1 голос
/ 30 декабря 2011

Вы должны изменить frame кнопки, а не bounds. bounds представления описывает местоположение и размер представления в его собственном координатном пространстве. frame - это размер и местоположение в координатном пространстве суперпредставления.

if (button.backgroundColor == [UIColor yellowColor]) {
    button.frame = frame;
}
...