phetsims / scenery

Scenery is an HTML5 scene graph.
MIT License
54 stars 12 forks source link

[iPad 2] Safari on iOS 9.3.5 takes unconventional creative liberties with SVG rendering #654

Open jonathanolson opened 7 years ago

jonathanolson commented 7 years ago

Noted in https://github.com/phetsims/function-builder/issues/35 and https://github.com/phetsims/projectile-motion/issues/129.

Safari iOS appears to take an avant-garde approach clearing rectangles in SVG rendering: 35 img_0091

In toeing the more conservative "don't look crazy buggy" line, we've handled this in the past by forcing sections (usually on top) to render in Canvas instead of SVG. This may affect performance, however.

Tracking instances of this bug (and how it was solved) here.

jonathanolson commented 7 years ago

In a fun turn of events, setting { layerSplit: true } on the projectile-motion CannonNode caused the cannon to somewhat animate with the projectile ONLY on iPad 2.

So presumably this bug can affect positioning/layout, not just clipping artifacts.

Proposed fix for projectile-motion is, again, setting something to render in Canvas.

phet-steele commented 7 years ago

phetsims/balancing-act/issues/70 also falls under this issue, and has shown similar problems in projectile-motion: img_0097 img_0097

balancing-act:

20160406_162848

pixelzoom commented 6 years ago

A variation of this problem was noted in Equality Explorer, see https://github.com/phetsims/equality-explorer/issues/135. In the Operations screen, the bottoms of the operator radio buttons disappear when an operation is applied. The relevant code is UniversalOperationControl.js. See that issue for a video demonstration. Here's a screenshot:

42240623-1c68f0d4-7ec5-11e8-9fbb-b44d3ca75df9

jessegreenberg commented 5 years ago

This showed up again in coulombs-law, see #890, when the arrow buttons are disabled on the number controls, certain positions of the charges in the sim cause the arrows to be partially rendered, only in iOS 9.3.5. The problem went away with rootRenderer="canvas".