দ্রুততম ব্যাকগ্রাউন্ডে অস্পষ্ট প্রভাব যুক্ত করা হচ্ছে


118

আমি নিয়ামকটি দেখতে একটি পটভূমি চিত্র সেট করছি। তবে আমি এই পটভূমিতে অস্পষ্ট প্রভাব যুক্ত করতে চাই। কিভাবে আমি এটি করতে পারব?

আমি নিম্নলিখিত কোড সহ ব্যাকগ্রাউন্ড সেট করছি:

self.view.backgroundColor = UIColor(patternImage: UIImage(named: "testBg")!)

অস্পষ্ট চিত্র দেখার জন্য আমি ইন্টারনেটে খুঁজে পেয়েছি যে আমি কীভাবে এটি আমার পটভূমিতে প্রয়োগ করতে পারি?

var darkBlur = UIBlurEffect(style: UIBlurEffectStyle.Dark)
// 2
var blurView = UIVisualEffectView(effect: darkBlur)
blurView.frame = imageView.bounds
// 3
imageView.addSubview(blurView)

কাস্টম ব্লার স্কেল স্ট্যাকওভারফ্লো.com
জ্যাক

উত্তর:


334

আমি এই কোডটি পরীক্ষা করেছি এবং এটি ভাল কাজ করছে:

let blurEffect = UIBlurEffect(style: UIBlurEffect.Style.dark)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = view.bounds
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.addSubview(blurEffectView)

সুইফট ৩.০ এর জন্য:

let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = view.bounds
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.addSubview(blurEffectView)

সুইফট ৪.০ এর জন্য:

let blurEffect = UIBlurEffect(style: UIBlurEffect.Style.dark)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = view.bounds
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.addSubview(blurEffectView)

এখানে আপনি ফলাফল দেখতে পারেন:

অস্পষ্ট দর্শন

অথবা আপনি এই জন্য এই lib ব্যবহার করতে পারেন:

https://github.com/FlexMonkey/Blurable


5
অস্পষ্ট স্কেল পরিবর্তন করার কোনও উপায় আছে কি? এটি খুব ঝাপসা
টোলগা টোকলার

2
সবেমাত্র পরিবর্তনUIBlurEffectStyle.Light
ধর্মেশ খেেনি

11
অথবা আপনি ইউআইভিউজুয়ালএফেক্টভিউতে আলফাকে 1.0 এরও কম সেট করতে পারেন। 0.8 বা 0.7 চেষ্টা করুন।
ডানকান সি

31
অ্যাপল ভিজ্যুয়ালএফেক্টভিউ
টোলগা টোকলার

4
সমস্ত নিয়ন্ত্রণ এই অস্পষ্টতার অধীনে লুকানো আছে। পরিবর্তে অ্যাডসউবভিউ - স্ব.উইউভিউ.ইনসেটসউবউভিউটি ব্যবহার করুন (ব্লারএফেক্টভিউ, এ: 0)
লিওনিফ

45

আপনি ইউআইআইমেজভিউয়ের একটি এক্সটেনশন করতে পারেন।

সুইফট ২.০

import Foundation
import UIKit

extension UIImageView
{
    func makeBlurImage(targetImageView:UIImageView?)
    {
        let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark)
        let blurEffectView = UIVisualEffectView(effect: blurEffect)
        blurEffectView.frame = targetImageView!.bounds

        blurEffectView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] // for supporting device rotation
        targetImageView?.addSubview(blurEffectView)
    }
}

ব্যবহার:

override func viewDidLoad()
{
    super.viewDidLoad()

    let sampleImageView = UIImageView(frame: CGRectMake(0, 200, 300, 325))
    let sampleImage:UIImage = UIImage(named: "ic_120x120")!
    sampleImageView.image =  sampleImage

    //Convert To Blur Image Here
    sampleImageView.makeBlurImage(sampleImageView)

    self.view.addSubview(sampleImageView)
}

সুইফট 3 এক্সটেনশন

import Foundation
import UIKit

extension UIImageView
{
    func addBlurEffect()
    {
        let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light)
        let blurEffectView = UIVisualEffectView(effect: blurEffect)
        blurEffectView.frame = self.bounds

        blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] // for supporting device rotation
        self.addSubview(blurEffectView)
    }
}

ব্যবহার:

yourImageView.addBlurEffect()

সংযোজন:

extension UIView {

  /// Remove UIBlurEffect from UIView
  func removeBlurEffect() {
    let blurredEffectViews = self.subviews.filter{$0 is UIVisualEffectView}
    blurredEffectViews.forEach{ blurView in
      blurView.removeFromSuperview()
    }
  }

7
চমৎকার ধারণা! এটি কি কেবল মেকব্লিউআমাইজ () না হয়ে টার্গেটেমেজভিউয়ের পরিবর্তে স্ব ব্যবহার করতে পারে?
ইমানুয়েল ফুমাগল্লি

1
আমি নিশ্চিত নই তবে কোনও যুক্তি যদি সঠিকভাবে পাস না করা হয় তবে এই কোডটি ক্র্যাশ হতে পারে? এর একটি "যদি tmpTargetImageView = টার্গেটইমেজভিউ {}" বিবৃতি থাকা উচিত
রোমন ২

@ রোমওন আপনি কোনও যুক্তি সরবরাহ না করলে আপনি কেবল একটি সংকলন ত্রুটি / ব্যর্থ বিল্ড পাবেন। এছাড়াও, এটি কোনও চিত্র ছাড়াই কাজ করবে যাতে এটি মোড়কের প্রয়োজন হয় না; এবং আপনি যদি কোনও চিত্র যুক্ত করতে ভুলে যান তবে পরীক্ষণ আপনাকে দেখায়।
জোশ

বিন্দুটি হ'ল কোনও নিল ইমেজভিউ পাস হলে এটি ক্রাশ হবে। আদর্শ হ'ল টার্গেট ইমেজভিউয়ের পরিবর্তে স্ব ব্যবহারের ভাবনা @ ইমানুয়েলফুমাগলির ধারণা, তবে কোনও গার্ড স্টেটমেন্ট ব্যবহার করা এবং কোনও নীল যুক্তির ক্ষেত্রে ফিরে আসাও সম্ভব।
উজাক

অস্পষ্টতার সাথে চিত্রের বিবরণ দেওয়া আরও ভাল। ভাল ধন্যবাদ.
MRizwan33

13

@ অ্যালভিনজর্গে কেবল ব্যবহার করা উচিত:

extension UIImageView{        
    func blurImage()
    {
        let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark)
        let blurEffectView = UIVisualEffectView(effect: blurEffect)
        blurEffectView.frame = self.bounds

        blurEffectView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] // for supporting device rotation
        self.addSubview(blurEffectView)
    }
}

ব্যবহার :

 blurredBackground.frame = self.view.bounds
 blurredBackground.blurImage()
 self.view.addSubview(self.blurredBackground)

11

সুইফ্ট 3 (আইওএস 10.0 এবং 8.0) এর জন্য

var darkBlur:UIBlurEffect = UIBlurEffect()

if #available(iOS 10.0, *) { //iOS 10.0 and above
    darkBlur = UIBlurEffect(style: UIBlurEffectStyle.prominent)//prominent,regular,extraLight, light, dark
} else { //iOS 8.0 and above
  darkBlur = UIBlurEffect(style: UIBlurEffectStyle.dark) //extraLight, light, dark
}
let blurView = UIVisualEffectView(effect: darkBlur)
blurView.frame = self.view.frame //your view that have any objects
blurView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.addSubview(blurView)

10

ডার্ক এফেক্টের সাথে অস্পষ্ট চিত্র তৈরি করতেও আপনি ইউরি কোরিমেজ ব্যবহার করতে পারেন

  1. চিত্রের জন্য স্ন্যাপশট তৈরি করুন

    func snapShotImage() -> UIImage {
        UIGraphicsBeginImageContext(self.frame.size)
        if let context = UIGraphicsGetCurrentContext() {
            self.layer.renderInContext(context)
            let image = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            return image
        }
    
        return UIImage()
    }
  2. আপনার ইচ্ছামতো কোরআইজেন ফিল্টার প্রয়োগ করুন

    private func bluredImage(view:UIView, radius:CGFloat = 1) -> UIImage {
    let image = view.snapShotImage()
    
    if let source = image.CGImage {
        let context = CIContext(options: nil)
        let inputImage = CIImage(CGImage: source)
    
        let clampFilter = CIFilter(name: "CIAffineClamp")
        clampFilter?.setDefaults()
        clampFilter?.setValue(inputImage, forKey: kCIInputImageKey)
    
        if let clampedImage = clampFilter?.valueForKey(kCIOutputImageKey) as? CIImage {
            let explosureFilter = CIFilter(name: "CIExposureAdjust")
            explosureFilter?.setValue(clampedImage, forKey: kCIInputImageKey)
            explosureFilter?.setValue(-1.0, forKey: kCIInputEVKey)
    
            if let explosureImage = explosureFilter?.valueForKey(kCIOutputImageKey) as? CIImage {
                let filter = CIFilter(name: "CIGaussianBlur")
                filter?.setValue(explosureImage, forKey: kCIInputImageKey)
                filter?.setValue("\(radius)", forKey:kCIInputRadiusKey)
    
                if let result = filter?.valueForKey(kCIOutputImageKey) as? CIImage {
                    let bounds = UIScreen.mainScreen().bounds
                    let cgImage = context.createCGImage(result, fromRect: bounds)
                    let returnImage = UIImage(CGImage: cgImage)
                    return returnImage
                }
            }
        }
    }
    return UIImage()
    }

8

এটি সুইফট 5 এ আমার জন্য কাজ করেছিল

let blurredView = UIVisualEffectView(effect: UIBlurEffect(style: .light))
blurredView.frame = self.view.bounds
backgroundimage.addSubview(blurredView)

1
হাই @ মার্টা, আপনি কীভাবে ঝাপসা ভিউয়ের সক্ষমতা হ্রাস করবেন জানেন?
আকাশ

5

এটি সর্বদা সঠিক ফ্রেম রাখে:

public extension UIView {

    @discardableResult
    public func addBlur(style: UIBlurEffect.Style = .extraLight) -> UIVisualEffectView {
        let blurEffect = UIBlurEffect(style: style)
        let blurBackground = UIVisualEffectView(effect: blurEffect)
        addSubview(blurBackground)
        blurBackground.translatesAutoresizingMaskIntoConstraints = false
        blurBackground.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true
        blurBackground.topAnchor.constraint(equalTo: topAnchor).isActive = true
        blurBackground.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
        blurBackground.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true
        return blurBackground
    }
}

3

স্টাইলের জন্য আপনার সর্বদা .dark ব্যবহার করা উচিত এবং এটিকে দুর্দান্ত দেখানোর জন্য নিম্নলিখিত কোডটি যুক্ত করা উচিত

    blurEffectView.backgroundColor = .black
    blurEffectView.alpha = 0.4

1

এই কোডটি আমার পক্ষে দুর্দান্ত কাজ করছে! এটি সুইফট ৪.x এর জন্য

let blurEffect = UIBlurEffect(style: .ExtraLight)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = self.view.frame
self.view.insertSubview(blurEffectView, atIndex: 0)


0

একটি ইউআইভিউ এক্সটেনশনে:

func addBlurredBackground(style: UIBlurEffect.Style) {
    let blurEffect = UIBlurEffect(style: style)
    let blurView = UIVisualEffectView(effect: blurEffect)
    blurView.frame = self.frame
    blurView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    self.addSubview(blurView)
    self.sendSubviewToBack(blurView)
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.