2016-08-18 3 views
0

Ich mache eine Video App und ich versuche, Unschärfe Hintergrund des Videos like that hinzuzufügen und den Unschärfe-Effekt abhängig von der Folie Wert zu steuern. Ich verwende Objectivc-C für meine Codierung. Kann mir bitte jemand helfen wie soll ich das machen?iOS machen Video Hintergrund Unschärfe

Antwort

0

Sie nur eine Maske Unschärfe Ansicht benötigen, versuchen Sie diesen Code zu verwenden:

@interface ViewController() 

@property UISlider *slider; 
@property UIVisualEffectView *visualEffectView; 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    //VisableRect = 100,100,200,200 

    //Add a backgroun picture 
    UIImageView* imageV = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 100)]; 
    imageV.image = [UIImage imageNamed:@"test"]; 
    [self.view addSubview:imageV]; 

    _visualEffectView = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]]; 
    _visualEffectView.frame = imageV.frame; 
    _visualEffectView.alpha = 1.0; 
    [self.view addSubview:_visualEffectView]; 

    //create path 
    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRect:imageV.bounds]; 
    UIBezierPath *otherPath = [[UIBezierPath bezierPathWithRect:CGRectMake(100, 100, 200, 200)] bezierPathByReversingPath]; 
    [maskPath appendPath:otherPath]; 

    //set mask 
    CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
    maskLayer.path = maskPath.CGPath; 
    [_visualEffectView.layer setMask:maskLayer]; 

    _slider = [[UISlider alloc] initWithFrame:CGRectMake(0, imageV.frame.size.height, 200, 20)]; 
    _slider.minimumValue = 0; 
    _slider.maximumValue = 1; 
    _slider.value = 1; 
    [_slider addTarget:self action:@selector(updateValue:) forControlEvents:UIControlEventValueChanged]; 
    [self.view addSubview:_slider]; 
} 

-(IBAction)updateValue:(id)sender{ 
    float sVaLue = _slider.value; 
    _visualEffectView.alpha = sVaLue; 
} 

und der Effekt ist, wie dieses Bild:

enter image description here

Sie den Pfad der Maskenschicht ändern kann Jede Form, die Sie wollen, und wenn Sie ein Video verwischen müssen, ändern Sie einfach das ImageV in die gewünschte Ansicht.

Ich hoffe, es kann Ihnen helfen.

+0

Vielen Dank für Ihre Antwort. – Rupshikha

+0

Es gibt immer noch ein paar Probleme? @Rupshikha –

+0

Ich habe es noch nicht versuchen. Ich brauche dynamische Unschärfe-Effekte je nach Video-Frame, wenn es abgespielt wird. Ich werde Sie wissen lassen, wenn ich irgendein Problem habe. – Rupshikha

Verwandte Themen