CALayerInvalidGeometry исключение во время воспроизведения видео HTML5 - PullRequest
5 голосов
/ 06 декабря 2010

После обновления до iOS 4.2 SDK в моем приложении появляется следующее исключение:

Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [nan 22]'

(см. Ниже копию стека вызовов)

подробности:

'- UIWebView с видео тегом внутри UIScrollView

'- видео может воспроизводиться внутри UIWebView, но при попытке увеличить масштаб и использовать кнопку «Уменьшить» или «Готово» на проигрывателе приложение вылетает с указанным исключением. Это не происходит в SDK 3.2

*** Call stack at first throw:
(
 0   CoreFoundation                      0x01150be9 __exceptionPreprocess + 185
 1   libobjc.A.dylib                     0x012a55c2 objc_exception_throw + 47
 2   CoreFoundation                      0x01109628 +[NSException raise:format:arguments:] + 136
 3   CoreFoundation                      0x0110959a +[NSException raise:format:] + 58
 4   QuartzCore                          0x0200996a _ZL18CALayerSetPositionP7CALayerRKN2CA4Vec2IdEEb + 177
 5   QuartzCore                          0x020098b5 -[CALayer setPosition:] + 42
 6   QuartzCore                          0x020097cc -[CALayer setFrame:] + 763
 7   UIKit                               0x0030d307 -[UIView(Geometry) setFrame:] + 255
 8   UIKit                               0x003e6add -[UISlider setFrame:] + 166
 9   MediaPlayer                         0x00f0faee -[MPDetailSlider setFrame:] + 78
 10  MediaPlayer                         0x00f267b7 -[MPWildcatFullScreenVideoOverlay layoutSubviews] + 1280
 11  QuartzCore                          0x0200e451 -[CALayer layoutSublayers] + 181
 12  QuartzCore                          0x0200e17c CALayerLayoutIfNeeded + 220
 13  QuartzCore                          0x0200737c _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310
 14  QuartzCore                          0x020070d0 _ZN2CA11Transaction6commitEv + 292
 15  QuartzCore                          0x020377d5 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 99
 16  CoreFoundation                      0x01131fbb __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27
 17  CoreFoundation                      0x010c70e7 __CFRunLoopDoObservers + 295
 18  CoreFoundation                      0x0108fbd7 __CFRunLoopRun + 1575
 19  CoreFoundation                      0x0108f240 CFRunLoopRunSpecific + 208
 20  CoreFoundation                      0x0108f161 CFRunLoopRunInMode + 97
 21  GraphicsServices                    0x01a85268 GSEventRunModal + 217
 22  GraphicsServices                    0x01a8532d GSEventRun + 115
 23  UIKit                               0x002e642e UIApplicationMain + 1160
 24  ecom                                0x000022c0 main + 102
 25  ecom                                0x00002251 start + 53
)
terminate called after throwing an instance of 'NSException'

Ответы [ 4 ]

6 голосов
/ 03 января 2011

Начиная с iOS 4.2, по-видимому, существует проблема с вычислениями размера кадра для ползунка внутри MoviePlayer.

Если ширина кадра установлена ​​между 143,0 и 235,0 происходит это исключение.

1 голос
/ 09 января 2011

Я видел похожую проблему с моим UIScrollView. Я заметил это предупреждение в iOS документах:

Важно: Вы не должны вставлять UIWebView или UITableView объекты в UIScrollView объекты. Если ты так сделаешь, неожиданное поведение может привести к сенсорные события для двух объектов могут быть перепутанным и неправильно обработанным.

У меня был UITextView, встроенный в scrollView. Удаление, которое решило проблему для меня.

0 голосов
/ 31 января 2011

У меня начались те же исключения с 4.2 и Xcode 4.2.5 ( только в симуляторе - никогда на реальном устройстве 4.2) и с кодом CAGradientLayer для градиентного фона для ячеек - что в противном случае отлично работает на нескольких других приложениях,

к счастью,

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

0 голосов
/ 08 декабря 2010

У меня также была такая же проблема с классом, унаследованным от UIScrollView. Решение было довольно странным: вместо «initWithFrame» я просто использовал «init» и установил фрейм вручную в следующей строке. Это решило проблему для меня.

Проблема возникла только на одном конкретном объекте - я создал объекты такого же типа с помощью initWithFrame в других частях моей программы без проблем. Проблема также произошла только на iPhone 4 с iOS 4.2. Это работало без проблем на iPhone 4 с iOS 4.1 и на iPad с iOS 4.2.

...