corin8823 / Popover

Popover is a balloon library like Facebook app. It is written in pure swift.
MIT License
2.11k stars 327 forks source link

Ignoring bogus layer size #25

Closed DominikButz closed 8 years ago

DominikButz commented 8 years ago

Great UI framework, thanks! I created a new class that launches a popover from a custom toolbar ( see RichEditorView framework), the popover has a UIToolbar as content view. Some bar button items in the RichEditorView Toolbar launch the popover, so I reuse the popover but change the items in the toolbar content view (see note taking apps like Evernote, same logic). When I tap the same item on the RichEditorToolbar a second time, the popover doesn't appear. it appears only the first time or if I tap another item...

Console prints this warning:\ [<CALayer: 0x7fda7b3160c0> display]: Ignoring bogus layer size (1390000.000000, 540000.000000), contentsScale 2.000000, backing store size (2780000.000000, 1080000.000000)**

Does anyone experience the same problem? I can't exclude that it has to do with something else going on in my app / view controller... Any idea what the cause might be?

As shown in the gif below, the popover actually shows the black layover view in the background but the popover itself does not appear...

popover launching only on 2nd tap

thanks for any hints in the right direction

YoussefAK commented 8 years ago

Hi, I have exactly the same issue. I really don't know why that issue started happening today

corin8823 commented 8 years ago

Hi! I'm sorry for late reply. I think it can be solved if there is your demo project.

YoussefAK commented 8 years ago

Thank you for the quick reply :) I was able to solve this issue by reinstalling the library

lvdaqian commented 8 years ago

I met the same issue.

The root cause in my case is that I use the same Popover instance to show and dismiss popover again and again.

The framework works well on the first time. But from the second time, it only show the black overlay layer, not show the popover correctly.

Finally, I found that the Popover view's transform property is not correct before I call Popover.show second time. So I just set transform of popover to Identity before I call Popover.show, it works well now.

Creating a new Popover instance every time you want to show should also works well.

lvdaqian commented 8 years ago

I also create a pull request to try to fix this issue internal.