[ios] UIVisualEffectView를 사용하여 이미지를 흐리게 만드는 방법은 무엇입니까?

누군가 이미지에 흐림 효과를 적용하는 간단한 예를 들어 줄 수 있습니까? 나는 잠시 동안 코드를 알아 내려고 노력했다 🙁 obj c에서 여전히 새로운!

UIVisualEffectView복잡한 시각 효과를 통해 간단한 추상화를 제공한다. 원하는 효과에 따라 결과는보기 뒤에 계층화 된 컨텐츠 또는보기의 contentView에 추가 된 컨텐츠에 영향을 줄 수 있습니다.

적용 UIVisualEffectView유출되는보기에 흐림 또는 활기 효과를 적용하기 위해 기존의 볼 수 있습니다. UIVisualEffectView를 뷰 계층 구조에 추가 한 후 하위 뷰를의 contentView에 추가하십시오 UIVisualEffectView. 하위 뷰를 직접 UIVisualEffectView자체에 추가하지 마십시오 .

https://developer.apple.com/documentation/uikit/uivisualeffectview#//apple_ref/occ/instp/UIVisualEffectView/contentView



답변

이 흐림보기를 imageView에 넣으십시오. Objective-C의 예는 다음과 같습니다.

UIVisualEffect *blurEffect;
blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

UIVisualEffectView *visualEffectView;
visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];

visualEffectView.frame = imageView.bounds;
[imageView addSubview:visualEffectView];

그리고 스위프트 :

var visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .Light))

visualEffectView.frame = imageView.bounds

imageView.addSubview(visualEffectView)


답변

UIVisualEffectView에 UIVibrancyEffect 및 UIBlurEffect를 사용하는 방법은 다음과 같습니다.

목표 -C :

// Blur effect
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
[blurEffectView setFrame:self.view.bounds];
[self.view addSubview:blurEffectView];

// Vibrancy effect
UIVibrancyEffect *vibrancyEffect = [UIVibrancyEffect effectForBlurEffect:blurEffect];
UIVisualEffectView *vibrancyEffectView = [[UIVisualEffectView alloc] initWithEffect:vibrancyEffect];
[vibrancyEffectView setFrame:self.view.bounds];

// Label for vibrant text
UILabel *vibrantLabel = [[UILabel alloc] init];
[vibrantLabel setText:@"Vibrant"];
[vibrantLabel setFont:[UIFont systemFontOfSize:72.0f]];
[vibrantLabel sizeToFit];
[vibrantLabel setCenter: self.view.center];

// Add label to the vibrancy view
[[vibrancyEffectView contentView] addSubview:vibrantLabel];

// Add the vibrancy view to the blur view
[[blurEffectView contentView] addSubview:vibrancyEffectView];

스위프트 4 :

    // Blur Effect
    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)
    blurEffectView.frame = view.bounds
    view.addSubview(blurEffectView)

    // Vibrancy Effect
    let vibrancyEffect = UIVibrancyEffect(blurEffect: blurEffect)
    let vibrancyEffectView = UIVisualEffectView(effect: vibrancyEffect)
    vibrancyEffectView.frame = view.bounds

    // Label for vibrant text
    let vibrantLabel = UILabel()
    vibrantLabel.text = "Vibrant"
    vibrantLabel.font = UIFont.systemFont(ofSize: 72.0)
    vibrantLabel.sizeToFit()
    vibrantLabel.center = view.center

    // Add label to the vibrancy view
    vibrancyEffectView.contentView.addSubview(vibrantLabel)

    // Add the vibrancy view to the blur view
    blurEffectView.contentView.addSubview(vibrancyEffectView)


답변

간단한 상황에서 인터페이스 빌더를 사용하여 이러한 효과를 쉽게 만들 수도 있습니다. 보기의 z- 값은 문서 개요에 나열된 순서에 따라 달라 지므로 UIVisualEffectView흐리게 표시하기 전에 문서 개요로 a 를 드래그 할 수 있습니다 . 이것은 자동으로 중첩 생성 UIView인, contentView주어진의 속성을 UIVisualEffectView. 이 뷰 내에서 흐림 위에 표시하려는 것을 중첩시킵니다.

XCode6 베타 5

vibrancy를 쉽게 활용할 수도 있습니다. 그러면 vibrancy가 기본적으로 활성화되어 문서 개요에 UIVisualEffect중첩 된 또 다른 중첩이 자동으로 만들어 UIVisualEffectView집니다. 그런 다음 레이블 또는 텍스트보기를 중첩 UIView(다시 말해의 contentView속성 UIVisualEffectView)에 추가하여 “> 슬라이드 잠금 해제”UI 요소와 동일한 효과를 얻을 수 있습니다.

여기에 이미지 설명을 입력하십시오


답변

UI 요소를 만들거나 유지 관리하는 데 코드가없는 스토리 보드를 통해 시각 효과를 만드는 것이 좋습니다. 그것은 나에게 완전한 조경 지원을 제공합니다. UIVisualEffects를 Blur 및 Vibrancy와 함께 사용하는 데모를 만들었습니다.

Github 데모


답변

누군가 Swift의 답변을 원한다면 :

var blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark) // Change .Dark into .Light if you'd like.

var blurView = UIVisualEffectView(effect: blurEffect)

blurView.frame = theImage.bounds // 'theImage' is an image. I think you can apply this to the view too!

업데이트 :

현재로서는 IB에서 사용할 수 있으므로 아무것도 코딩 할 필요가 없습니다. 🙂


답변

-(void) addBlurEffectOverImageView:(UIImageView *) _imageView
{
    UIVisualEffect *blurEffect;
    blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];

    UIVisualEffectView *visualEffectView;
    visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];

    visualEffectView.frame = _imageView.bounds;
    [_imageView addSubview:visualEffectView];
}


답변

텍스트를보다 쉽게 ​​오버레이 할 수 있도록 배경을 밝거나 어둡게 흐리게하는 데 사용됩니다. 선택적으로 생동감을 활성화하여 텍스트가 흐림과 함께 밝고 대조적 인 색상으로 렌더링되도록 할 수 있습니다.