CBZSplashView icon indicating copy to clipboard operation
CBZSplashView copied to clipboard

Support for vectorized masking

Open Mazyod opened this issue 11 years ago • 5 comments

Hey!

I thought I'd start an issue with this new task I am tackling, so I can dump the ideas and issues I com across..

First thing's first, what is this about?

To make the component as not dissimilar as possible, the component needs to draw the splash view with a clipped shape in the middle. That shape would animate out by expanding until it essentially takes over the whole view. At that point, the view behind should be fully visible. So, there is no fading here.

Mazyod avatar Aug 07 '14 14:08 Mazyod

So, the first issue I came across is: How to handle the current implementation?

I think the current implementation is useful by itself, and could be used, so I won't be replacing it. I am, however, seeing two possible approaches:

  1. Add a new init method that takes a UIBezierPath, and save the bezier path.

The issue here is, everywhere in the code, we have to add if statements. Check if we are using the bezier path, then do this, otherwise do nothing. Same thing for the image.

Here is an example:

- (void)drawRect:(CGRect)rect
{
  /* Only override draw rect for vectorized splash screen */
  if (!self.bezierPath) {
    return [super drawRect:rect];
  }

  CGContextRef context = UIGraphicsGetCurrentContext();
  CGContextAddRect(context, self.bounds);
  CGContextAddPath(context, self.bezierPath.CGPath);

  [self.backgroundViewColor setFill];
  CGContextEOFillPath(context);
}
  1. Provide an abstract superclass interface, and have different implementations in two subclasses.

I think this is a better approach, since it modularly separates the two functionalities. We should also hide those classes from the user, and provide a convenient "factory" method, since the user doesn't need to worry about the exact subclass he is using.

From this, I realized there will be some major overhauls to the component, but it will be hidden within the component.

Maz

Mazyod avatar Aug 07 '14 15:08 Mazyod

Yep, I do like this idea. There is no need to worry about overhauling, it is one of the reasons the Pod is still 0.1.1. I think it is a really good idea as we should be able to mimic the twitter animation exactly.

I am happy for you to go ahead with either of these approaches.

callumboddy avatar Aug 07 '14 15:08 callumboddy

A couple of other features to consider as well:

  • adding a background image/pattern behind
  • not masking the icon

what is your opinion here?

callumboddy avatar Aug 07 '14 15:08 callumboddy

I am also going to have a look at creating some new unique transition styles the user can then select from.

callumboddy avatar Aug 07 '14 15:08 callumboddy

I love the transitions idea! Maybe you can create a new issue for each feature/bug?

Mazyod avatar Aug 07 '14 15:08 Mazyod