iPhone: UILabel применяет CGAffineTransformMakeRotation, вызывая таинственный сбой - PullRequest
0 голосов
/ 14 апреля 2010

В

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil parentController:(GameViewController *)myGameController{

Имеют серию меток-трансформеров, например:

    deg90 = 1.570796326794897;
//....transforms
    background.center = CGPointMake(160,230);
    background.transform = CGAffineTransformMakeRotation(deg90);

    BetLabel.text = @"test";       
    BetLabel.transform = CGAffineTransformMakeRotation(deg90);

Эта последняя строка сбивает меня с толку:

2010-04-13 21:04:47.858 Game[1204:207] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (1) beyond bounds (1)'
2010-04-13 21:04:47.893 Game[1204:207] Stack: (
    864992541,
    859229716, (lots of numbers)

Но если я закомментирую это, я получаю текст, изменяющийся отлично.

Обновление: Ой, только что сделал тест ... оказывается, что другие преобразования были в UIImageViews. Очевидно, что вращение метки в этом xib вызывает сбой.

Но в другом файле преобразования работают нормально:

    newprofileentry.transform = CGAffineTransformMakeRotation(1.570796326794897);
    playerb0.transform = CGAffineTransformMakeRotation(1.570796326794897);
    playerb1.transform = CGAffineTransformMakeRotation(1.570796326794897);

Попытка замены deg90 на полное значение с плавающей точкой, все тот же сбой.

Пробовал чистить кеш, перезагружать IB и Xcode, чистить все цели. Программа работала нормально, пока я не добавил эти ярлыки. Попытался удалить метку, прочитать и снова подключить розетку.

Спасибо за чтение, надеюсь, у кого-то есть идеи по этому поводу.

Ура!

1 Ответ

0 голосов
/ 14 апреля 2010

Я предлагаю убрать преобразования из initWithNib: Возможно, вы пытаетесь изменить то, что еще не существует, потому что объекты в перо все еще инициализируются.

Вы также должны проверить файл пера (в Интерфейсном Разработчике или с ibtool), чтобы увидеть, есть ли что-то закодированное с этой конкретной меткой. Чтобы проверить это, вы можете поменять его порядок при инициализации с другой меткой, чтобы увидеть, связана ли проблема с этой конкретной меткой или с какой-либо меткой или объектом в последней позиции.

Размещение большего количества кода в контексте, вероятно, поможет.

...