W mojej aplikacji przejrzałem UIView
przez podklasowanie prostych UIView. Jeśli jednak spróbuję zrobić to samo, używając UIVisualEffectView
, nie jestem w stanie tego zrobić.Jak zrobić przezroczyste cięcie na UIVisualEffectView?
Oto, co jestem w stanie zrobić za pomocą normalnego UIView
:
Kiedy używam UIVisualEffectView
zamiast zielonej UIView
, nie mogę zobaczyć przejrzeć UIView, chociaż przejrzeć UIView
jest dodano do UIVisualEffectView
jako subview
.
Kod:
- (void)drawRect:(CGRect)rect { //this is same for the UIVIew and for the UIVisualEffectView
[super drawRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
// Clear any existing drawing on this view
// Remove this if the hole never changes on redraws of the UIView
CGContextClearRect(context, self.bounds);
// Create a path around the entire view
UIBezierPath *clipPath = [UIBezierPath bezierPathWithRect:self.bounds];
// Your transparent window. This is for reference, but set this either as a property of the class or some other way
CGRect transparentFrame;
// Add the transparent window
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:transparentFrame cornerRadius:5.0f];
[clipPath appendPath:path];
// NOTE: If you want to add more holes, simply create another UIBezierPath and call [clipPath appendPath:anotherPath];
// This sets the algorithm used to determine what gets filled and what doesn't
clipPath.usesEvenOddFillRule = YES;
// Add the clipping to the graphics context
[clipPath addClip];
// set your color
UIColor *tintColor = [UIColor greenColor];
// (optional) set transparency alpha
CGContextSetAlpha(context, 0.7f);
// tell the color to be a fill color
[tintColor setFill];
// fill the path
[clipPath fill];
}
Pytanie: Dlaczego to nie działa z UIVisualEffectView
?
Cześć Teja, Mógłbyś móc osiągnąć funkcjonalność wspomnianą w tym poście. Jeśli tak, możesz mi pomóc lub zaproponować kilka poprawek dla kodu podanego w następującym poście. http://stackoverflow.com/questions/39165751/circle-masking-for-image-cropping-in-ios?noredirect=1#comment65676404_39165751 –
@sree_iphonedev zrobi, gdy znajdę się przed komputerem! –
Czy ostatecznie to rozwiązałeś? –