অস্পষ্ট ওভারলে ভিউ তৈরি করা


375

নতুন আইওএসের মিউজিক অ্যাপ্লিকেশনটিতে, আমরা এমন দৃশ্যের পিছনে একটি অ্যালবামের কভার দেখতে পাচ্ছি যা এটি ঝাপসা করে।

এরকম কিছু কীভাবে সম্পাদন করা যায়? আমি ডকুমেন্টেশন পড়েছি, কিন্তু সেখানে কিছুই পাইনি।


এটি ব্যবহার করে দেখুন: stackoverflow.com/a/19506076/774394
আইভো লেকো

উত্তর:


552

আপনি UIVisualEffectViewএই প্রভাব অর্জন করতে ব্যবহার করতে পারেন । এটি একটি নেটিভ API যা পারফরম্যান্স এবং দুর্দান্ত ব্যাটারি লাইফের জন্য সূক্ষ্ম সুরে তৈরি করা হয়েছে, এবং এটি কার্যকর করা সহজ।

সুইফট:

//only apply the blur if the user hasn't disabled transparency effects
if !UIAccessibility.isReduceTransparencyEnabled {
    view.backgroundColor = .clear

    let blurEffect = UIBlurEffect(style: .dark)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)
    //always fill the view
    blurEffectView.frame = self.view.bounds
    blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

    view.addSubview(blurEffectView) //if you have more UIViews, use an insertSubview API to place it where needed
} else {
    view.backgroundColor = .black
}

উদ্দেশ্য গ:

//only apply the blur if the user hasn't disabled transparency effects
if (!UIAccessibilityIsReduceTransparencyEnabled()) {
    self.view.backgroundColor = [UIColor clearColor];

    UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
    UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
    //always fill the view
    blurEffectView.frame = self.view.bounds;
    blurEffectView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

    [self.view addSubview:blurEffectView]; //if you have more UIViews, use an insertSubview API to place it where needed
} else {
    self.view.backgroundColor = [UIColor blackColor];
}

অন্তর্নিহিত বিষয়বস্তুটি ঝাপসা করার জন্য আপনি যদি এই ভিউ কন্ট্রোলারকে মডেলভাবে উপস্থাপন করছেন তবে আপনাকে অতিরিক্ত উপস্থাপনের শৈলীর ওভার কারেন্ট কনটেক্সট এ সেট করতে হবে এবং ব্যাকগ্রাউন্ড কালার সেট করতে হবে যাতে নিশ্চিত হয়ে যায় যে অন্তর্নিহিত ভিউ কন্ট্রোলার ওভারটপ উপস্থাপিত হওয়ার পরে এটি দৃশ্যমান থাকবে ensure


7
insertSubView:belowSubView:এই view.insertSubview(blurEffectView, atIndex: 0)
কোডটিতে

2
উপরের উত্তরের রেফারেন্স সহ, "যদি (! ইউআইএএ্যাক্সেসিবিলিটিআইএসআরডিউস ট্রান্সপার্পেন্সি স্পেনীয় ())" চেক করা দরকার বা আমরা কী এড়িয়ে যেতে পারি?
GKK

3
আপনি আপনার ভিউ নিয়ামক উপস্থাপন হয়, নিশ্চিত করুন যে আপনি স্পষ্ট যেমন পটভূমির রঙ সেটিং সহ পরিবর্তন modalPresentationStyle = .overCurrentContext করা
Shardul

3
দুর্দান্ত কাজ !!! একক পরিবর্তন প্রয়োজন: [সেলফ ভিউ ইনসার্টসউবভিউ: ব্লারএফেক্টভিউ atIndex: 1];
অভিষেক থাপলিয়াল

2
আইওএস ১১-এ, আমি ম্যানুয়ালি পরীক্ষা করার প্রয়োজন নেই তা খুঁজে পাচ্ছি UIAccessibilityIsReduceTransparencyEnabled()
নাট হুইটেকার

284

মূল চিত্র

যেহেতু স্ক্রিনশটের সেই চিত্রটি স্থিতিশীল, আপনি CIGaussianBlurমূল চিত্র থেকে ব্যবহার করতে পারেন (আইওএস 6 প্রয়োজন)। এখানে নমুনা দেওয়া হয়েছে: https://github.com/evanwdavis/Fun-with-Masks/blob/master/Fun%20with%20Masks/EWDBlurExampleVC.m

মনে মনে, এটি এই পৃষ্ঠার অন্যান্য বিকল্পগুলির চেয়ে ধীর।

#import <QuartzCore/QuartzCore.h>

- (UIImage*) blur:(UIImage*)theImage
{   
    // ***********If you need re-orienting (e.g. trying to blur a photo taken from the device camera front facing camera in portrait mode)
    // theImage = [self reOrientIfNeeded:theImage];

    // create our blurred image
    CIContext *context = [CIContext contextWithOptions:nil];
    CIImage *inputImage = [CIImage imageWithCGImage:theImage.CGImage];

    // setting up Gaussian Blur (we could use one of many filters offered by Core Image)
    CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
    [filter setValue:inputImage forKey:kCIInputImageKey];
    [filter setValue:[NSNumber numberWithFloat:15.0f] forKey:@"inputRadius"];
    CIImage *result = [filter valueForKey:kCIOutputImageKey];

    // CIGaussianBlur has a tendency to shrink the image a little, 
    // this ensures it matches up exactly to the bounds of our original image
    CGImageRef cgImage = [context createCGImage:result fromRect:[inputImage extent]];

    UIImage *returnImage = [UIImage imageWithCGImage:cgImage];//create a UIImage for this function to "return" so that ARC can manage the memory of the blur... ARC can't manage CGImageRefs so we need to release it before this function "returns" and ends.
    CGImageRelease(cgImage);//release CGImageRef because ARC doesn't manage this on its own.

    return returnImage;

    // *************** if you need scaling
    // return [[self class] scaleIfNeeded:cgImage];
}

+(UIImage*) scaleIfNeeded:(CGImageRef)cgimg {
    bool isRetina = [[[UIDevice currentDevice] systemVersion] intValue] >= 4 && [[UIScreen mainScreen] scale] == 2.0;
    if (isRetina) {
        return [UIImage imageWithCGImage:cgimg scale:2.0 orientation:UIImageOrientationUp];
    } else {
        return [UIImage imageWithCGImage:cgimg];
    }
}

- (UIImage*) reOrientIfNeeded:(UIImage*)theImage{

    if (theImage.imageOrientation != UIImageOrientationUp) {

        CGAffineTransform reOrient = CGAffineTransformIdentity;
        switch (theImage.imageOrientation) {
            case UIImageOrientationDown:
            case UIImageOrientationDownMirrored:
                reOrient = CGAffineTransformTranslate(reOrient, theImage.size.width, theImage.size.height);
                reOrient = CGAffineTransformRotate(reOrient, M_PI);
                break;
            case UIImageOrientationLeft:
            case UIImageOrientationLeftMirrored:
                reOrient = CGAffineTransformTranslate(reOrient, theImage.size.width, 0);
                reOrient = CGAffineTransformRotate(reOrient, M_PI_2);
                break;
            case UIImageOrientationRight:
            case UIImageOrientationRightMirrored:
                reOrient = CGAffineTransformTranslate(reOrient, 0, theImage.size.height);
                reOrient = CGAffineTransformRotate(reOrient, -M_PI_2);
                break;
            case UIImageOrientationUp:
            case UIImageOrientationUpMirrored:
                break;
        }

        switch (theImage.imageOrientation) {
            case UIImageOrientationUpMirrored:
            case UIImageOrientationDownMirrored:
                reOrient = CGAffineTransformTranslate(reOrient, theImage.size.width, 0);
                reOrient = CGAffineTransformScale(reOrient, -1, 1);
                break;
            case UIImageOrientationLeftMirrored:
            case UIImageOrientationRightMirrored:
                reOrient = CGAffineTransformTranslate(reOrient, theImage.size.height, 0);
                reOrient = CGAffineTransformScale(reOrient, -1, 1);
                break;
            case UIImageOrientationUp:
            case UIImageOrientationDown:
            case UIImageOrientationLeft:
            case UIImageOrientationRight:
                break;
        }

        CGContextRef myContext = CGBitmapContextCreate(NULL, theImage.size.width, theImage.size.height, CGImageGetBitsPerComponent(theImage.CGImage), 0, CGImageGetColorSpace(theImage.CGImage), CGImageGetBitmapInfo(theImage.CGImage));

        CGContextConcatCTM(myContext, reOrient);

        switch (theImage.imageOrientation) {
            case UIImageOrientationLeft:
            case UIImageOrientationLeftMirrored:
            case UIImageOrientationRight:
            case UIImageOrientationRightMirrored:
                CGContextDrawImage(myContext, CGRectMake(0,0,theImage.size.height,theImage.size.width), theImage.CGImage);
                break;

            default:
                CGContextDrawImage(myContext, CGRectMake(0,0,theImage.size.width,theImage.size.height), theImage.CGImage);
                break;
        }

        CGImageRef CGImg = CGBitmapContextCreateImage(myContext);
        theImage = [UIImage imageWithCGImage:CGImg];

        CGImageRelease(CGImg);
        CGContextRelease(myContext);
    }

    return theImage;
}

স্ট্যাক ব্লার (বক্স + গাউসিয়ান)

  • স্ট্যাকব্লুর এটি বক্স এবং গাউসিয়ান ব্লার মিশ্রণ প্রয়োগ করে। অ-গতিযুক্ত গাউসের চেয়ে 7x দ্রুত, তবে বাক্সের অস্পষ্টতার চেয়ে কুৎসিত নয়। এখানে (জাভা প্লাগইন সংস্করণ) বা এখানে একটি ডেমো দেখুন (জাভাস্ক্রিপ্ট সংস্করণ) । এই অ্যালগরিদম কেডিএ এবং ক্যামেরা + এবং অন্যগুলিতে ব্যবহৃত হয়। এটি এক্সিলারেট ফ্রেমওয়ার্ক ব্যবহার করে না তবে এটি দ্রুত।

ফ্রেমওয়ার্ক ত্বরান্বিত করুন

  • ডাব্লুডাব্লুডিসি 2013 এর "আইওএসের সাথে প্রবৃদ্ধি UI প্রয়োগকারী" সেশনে অ্যাপল কীভাবে একটি অস্পষ্ট ব্যাকগ্রাউন্ড তৈরি করবেন তা ব্যাখ্যা করেছেন (14:30 এ) এবং applyLightEffectঅ্যাক্সিলারেট.ফ্রেমওয়ার্ক ব্যবহার করে নমুনা কোডে প্রয়োগ করা একটি পদ্ধতির উল্লেখ করেছেন ।

  • ডায়ামিক ব্লার্স তৈরি করতে জিপিইউআইমেজ ওপেনগিএল শেডার ব্যবহার করে। এটির বেশ কয়েকটি ধরণের অস্পষ্টতা রয়েছে: জিপিইউআইমেজবক্সব্লুরফিল্টার, জিপিইউআইমেজফাস্টব্লুরফিল্টার, গাউসিসিলেটিভ ব্লুর, জিপিইউআইমেজগাউসিয়ান ব্লুফিল্টার। এমনকী একটি জিপিইউআইজিবিওস ব্লুফিল্টার রয়েছে যা "আইওএস 7 এর নিয়ন্ত্রণ প্যানেল দ্বারা সরবরাহিত অস্পষ্টতার প্রভাবটিকে সম্পূর্ণরূপে প্রতিলিপি করা উচিত" ( টুইট , নিবন্ধ )। নিবন্ধটি বিস্তারিত এবং তথ্যবহুল।

    - (ইউআইআইএমেজ *) অস্পষ্ট জিপিউইউইউবিউশন: (ইউআইআইমেজ *) ব্লু ল্যাভিলের সাথে চিত্র: (এনএসআইঞ্জার) অস্পষ্ট {
        জিপিইউআইমেজফাস্টবলুর ফিল্টার * ব্লারফিল্টার = [জিপিইউআইমেজফাস্টব্লারফিল্টার নতুন];
        blurFilter.blurSize = blur;
        UII छवि * ফলাফল = [blurFilter চিত্রবাইফিলারিং ইমেজ: চিত্র];
        প্রত্যাবর্তনের ফলাফল;
    }
  • Indieambitions.com থেকে: ভিউমেজ ব্যবহার করে অস্পষ্টতা সম্পাদন করুন । আলগোরিদিমটি আইওএস-রিয়েলটাইমব্লুরে ব্যবহৃত হয় ।

  • নিক লকউড থেকে: https://github.com/nicklockwood/FXBlurView উদাহরণটি একটি স্ক্রোল ভিউয়ের উপর অস্পষ্টতা দেখায়। এটি ডিসপ্যাচ_সে্যান্সের সাথে ঝাপসা হয়ে যায়, তারপরে ইউআইটি ট্র্যাকিংআরলুপমোডের সাথে আপডেটগুলি কল করতে সিঙ্ক করে যাতে ইউআইকিট ইউআইএসক্রোলভিউয়ের স্ক্রোলকে বেশি অগ্রাধিকার দেয় তখন এই ব্লারটি পিছনে থাকে না। এটি নিকের আইওএস কোর অ্যানিমেশন বইটিতে ব্যাখ্যা করা হয়েছে , এটি বিটিডব্লিউটি দুর্দান্ত।

  • আইওএস-ব্লার এটি ইউআইটিুলবারের ঝাপসা লেয়ার নেয় এবং এটিকে অন্য কোথাও রাখে। আপনি যদি এই পদ্ধতিটি ব্যবহার করেন তবে অ্যাপল আপনার অ্যাপ্লিকেশনটিকে প্রত্যাখ্যান করবে। Https://github.com/mochidev/MDBlurView/issues/4 দেখুন

  • ইভাদনে ব্লগ থেকে: লাইভফ্রস্ট: দ্রুত, সিঙ্ক্রোনাস ইউআইভিউ স্ন্যাপশট কনভলভিং । দুর্দান্ত কোড এবং দুর্দান্ত পড়া। এই পোস্ট থেকে কিছু ধারণা:

    • CADisplayLink থেকে আপডেটগুলি থ্রটল করার জন্য একটি ক্রমিক ক্রোম ব্যবহার করুন।
    • সীমা পরিবর্তন না হলে বিটম্যাপ প্রসঙ্গটি পুনরায় ব্যবহার করুন।
    • একটি 0.5f স্কেল ফ্যাক্টর সহ - [ক্যালায়ার রেন্ডারইনকন্টেক্সট:] ব্যবহার করে ছোট চিত্রগুলি অঙ্কন করুন।

অন্যান্য উপাদান

অ্যান্ডি মাতুশাক টুইটারে বলেছিলেন : "আপনি জানেন যে অনেক জায়গাগুলি দেখে মনে হচ্ছে যে আমরা আসল সময়ে এটি করছি, এটি চালাক কৌশল দ্বারা স্থির।"

doubleencore.com তারা বলে "আমরা যে 10 পর্তুগীজ ভাষায় দাগ ব্যাসার্ধ প্লাস বেশিরভাগ পরিস্থিতিতে সম্পৃক্তি 10 পর্তুগীজ ভাষায় বৃদ্ধি সেরা নকল আইওএস 7 এর ব্লার ইফেক্ট পাওয়া করেছি"।

অ্যাপলের এসবিএফ প্রসেসিউডালওয়াল্প্পপারভিউয়ের ব্যক্তিগত শিরোনামগুলিতে উঁকি দেওয়া

শেষ অবধি, এটি সত্যই অস্পষ্ট নয়, তবে মনে রাখবেন আপনি পিক্সেলটেড চিত্র পেতে রাস্টারাইজেশনস্কেল সেট করতে পারেন: http://www.dimzzy.com/blog/2010/11/blur-effect-for-uiview/


উত্তরের জন্য ধন্যবাদ! একটি সমস্যা সমাধান করা হয়। তবে আমাদের আরও একটি সমস্যা আছে। আইওএস-এ কীভাবে কভার চিত্র পাবেন? যদি এটি সম্ভব হয়?
কনদরতেদেবদেব

আপনার ফোন থেকে কীভাবে পটভূমি ওয়ালপেপার চিত্র পাবেন তা যদি আপনি বোঝাতে চান তবে এই মুহুর্তে কোনও ধারণা নেই। আমি এপিআই বিভেদে সেই কার্যকারিতাটি দেখিনি । হতে পারে এটি একটি ব্যক্তিগত API ব্যবহার করে uses
জানো

একটি জিনিস আমি লক্ষ্য করেছি (এবং আমি সম্পূর্ণ ভুল হতে পারি) এটি হ'ল অ্যাপলটির অস্পষ্টতাও কিছুটা রঙিন স্যাচুরেশনে যুক্ত হয়েছে add সুতরাং, আমি মনে করি না এটি একটি সাধারণ গাউসি অস্পষ্টতা।
ষটরাভার

স্কেল ফ্যাক্টরটি মনে রাখবেন যখন UIImageঅন্যথায় ফেরত দেওয়ার সময় এটি একটি রেটিনা ডিভাইসে খুব বড় দেখায় ...
স্টিফেন ডার্লিংটন

আপনি কি জানেন যে এই ধরনের প্রভাবটি হ্রাস না করা পারফরম্যান্স ছাড়াই কোনও ইউআইটিএবলভিউসেল প্রয়োগ করা যেতে পারে?
লিওনার্দো

15

আমি ঠিক এই প্রশ্নের আরও বিকল্প প্রদানের জন্য গ্রহণযোগ্য উত্তর থেকে একটি লিখিত উদ্দেশ্য-সি সংস্করণ পোস্ট করার সিদ্ধান্ত নিয়েছি ..

- (UIView *)applyBlurToView:(UIView *)view withEffectStyle:(UIBlurEffectStyle)style andConstraints:(BOOL)addConstraints
{
  //only apply the blur if the user hasn't disabled transparency effects
  if(!UIAccessibilityIsReduceTransparencyEnabled())
  {
    UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:style];
    UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
    blurEffectView.frame = view.bounds;

    [view addSubview:blurEffectView];

    if(addConstraints)
    {
      //add auto layout constraints so that the blur fills the screen upon rotating device
      [blurEffectView setTranslatesAutoresizingMaskIntoConstraints:NO];

      [view addConstraint:[NSLayoutConstraint constraintWithItem:blurEffectView
                                                       attribute:NSLayoutAttributeTop
                                                       relatedBy:NSLayoutRelationEqual
                                                          toItem:view
                                                       attribute:NSLayoutAttributeTop
                                                      multiplier:1
                                                        constant:0]];

      [view addConstraint:[NSLayoutConstraint constraintWithItem:blurEffectView
                                                       attribute:NSLayoutAttributeBottom
                                                       relatedBy:NSLayoutRelationEqual
                                                          toItem:view
                                                       attribute:NSLayoutAttributeBottom
                                                      multiplier:1
                                                        constant:0]];

      [view addConstraint:[NSLayoutConstraint constraintWithItem:blurEffectView
                                                       attribute:NSLayoutAttributeLeading
                                                       relatedBy:NSLayoutRelationEqual
                                                          toItem:view
                                                       attribute:NSLayoutAttributeLeading
                                                      multiplier:1
                                                        constant:0]];

      [view addConstraint:[NSLayoutConstraint constraintWithItem:blurEffectView
                                                       attribute:NSLayoutAttributeTrailing
                                                       relatedBy:NSLayoutRelationEqual
                                                          toItem:view
                                                       attribute:NSLayoutAttributeTrailing
                                                      multiplier:1
                                                        constant:0]];
    }
  }
  else
  {
    view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.7];
  }

  return view;
}

আপনি যদি কেবল প্রতিকৃতি মোড সমর্থন করেন বা আমি কেবল এই ফাংশনটিতে একটি পতাকা যুক্ত করতে সেগুলি ব্যবহার করতে চাইছি বা না চাইলে সীমাবদ্ধতাগুলি সরিয়ে দেওয়া যেতে পারে ..


1
নতুন ভাবেনদের (আমার) জন্য, উপরোক্ত পদ্ধতির কল করার একটি উপায় হ'ল: [সেলফ প্রয়োগব্লুরটোভিউ: এফেক্টস্টাইলের সাথে স্ব.উইউভিউ: ইউআইব্লিউরএফেক্টস্টাইল্ডার্ক এবং কনট্রেনট্রান্স: হ্যাঁ]; (আপনাকে ধন্যবাদ উত্তরব্লাস্ট)
tmr

14

আমি মনে করি না যে আমাকে কোড পোস্ট করার অনুমতি দেওয়া হয়েছে তবে ডাব্লুডাব্লুডিসি নমুনা কোড উল্লেখ করে উপরের পোস্টটি সঠিক। লিঙ্কটি এখানে: https://developer.apple.com/downloads/index.action?name=WWDC%202013

আপনি যে ফাইলটি সন্ধান করছেন সেটি হ'ল ইউআইআইমেজে বিভাগ এবং এই পদ্ধতিটি হ'ল লাইটএফেক্ট।

আমি উপরে একটি মন্তব্যে উল্লেখ করেছি যে, অ্যাপল ব্লারটির সম্পৃক্ততা রয়েছে এবং অস্পষ্টতা ছাড়াও অন্যান্য জিনিস চলছে। একটি সাধারণ অস্পষ্টতা কাজ করবে না ... আপনি যদি তাদের স্টাইল অনুকরণের জন্য সন্ধান করছেন।


8
সেই লিঙ্কটি নষ্ট হয়ে গেছে। এখানে সঠিক লিঙ্কটি দেওয়া আছে: developer.apple.com/downloads/index.action?name=WWDC%202013
অলিভারস এফ

নোট করুন যে এই উদাহরণ কোডটির জন্য এক্সকোড 5.0 এবং আইওএস এসডিকে 7.0 প্রয়োজন (যা এখনও প্রকাশ্যে প্রকাশ করা হয়নি)
মাইক গ্লেডহিল

স্থির লিঙ্কটির জন্য ধন্যবাদ, তবে এতে কয়েকটি নমুনা কোড রয়েছে, কোনটি প্রাসঙ্গিক ইউআইআইমেজ বিভাগটি ধারণ করে?
লিওনার্দো

1
@ লিওনার্দো আইওএস_ রানিংউইথএএসএনএপ.জিপ
জন স্টার দেওয়ার

1
... বা আইওএস_ইউআইইমেজএফেক্টস.জিপটি আরও নির্দিষ্টভাবে এটি।
জন স্টার দেওয়র

9

আমি মনে করি এর সহজ সমাধান হ'ল ইউআইটিউলবারকে ওভাররাইড করা, যা আইওএস-এর পিছনে সমস্ত কিছু ঝাপসা করে It's

আপনি এটি যে কোনও দৃষ্টিতে করতে পারেন, কেবল এটির UIToolbarপরিবর্তে একটি সাবক্লাস করুন UIView। এমনকি আপনি এটি কোনও সম্পত্তি UIViewControllerহিসাবেও করতে পারেন view, উদাহরণস্বরূপ ...

1) একটি নতুন ক্লাস তৈরি করুন যা "সাবক্লাস অফ" UIViewControllerএবং "ইউজার ইন্টারফেসের সাথে XIB সহ" জন্য বক্সটি চেক করুন।

2) ভিউটি নির্বাচন করুন এবং ডান হাতের প্যানেলে পরিচয় পরিদর্শকের কাছে যান (Alt-আদেশ -3)। "ক্লাস" এ পরিবর্তন করুনUIToolbar । এখন অ্যাট্রিবিউটস ইন্সপেক্টর (Alt-কমান্ড -4) এ যান এবং "ব্যাকগ্রাউন্ড" রঙটি "সাফ রঙে" পরিবর্তন করুন।

3) মূল দৃশ্যে একটি সংক্ষিপ্তসার যুক্ত করুন এবং এটি আপনার ইন্টারফেসের একটি আইবিআউটলেট পর্যন্ত লাগান। ফোন করুন backgroundColorView। এটি বাস্তবায়ন ( .m) ফাইলের একটি ব্যক্তিগত বিভাগ হিসাবে, এর মতো দেখতে পাবেন ।

@interface BlurExampleViewController ()
@property (weak, nonatomic) IBOutlet UIView *backgroundColorView;
@end

4) দেখুন নিয়ামক বাস্তবায়ন ( .m) ফাইল যান এবং -viewDidLoadপদ্ধতিটি পরিবর্তন করুন , নীচের মত দেখতে:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.view.barStyle = UIBarStyleBlack; // this will give a black blur as in the original post
    self.backgroundColorView.opaque = NO;
    self.backgroundColorView.alpha = 0.5;
    self.backgroundColorView.backgroundColor = [UIColor colorWithWhite:0.3 alpha:1];
}

এটি আপনাকে একটি গা dark় ধূসর দর্শন দেবে যা এর পিছনে সমস্ত কিছুই ঝাপসা করে। ওএস / এসডিকে প্রদত্ত আপনার নখদর্পণে থাকা সমস্ত কিছু ব্যবহার করে কোনও মজাদার ব্যবসা নয়, কোনও ধীর গতির চিত্র অস্পষ্ট নয়।

আপনি এই ভিউ নিয়ন্ত্রকের দর্শনটিকে অন্য দৃশ্যে যুক্ত করতে পারেন:

[self addChildViewController:self.blurViewController];
[self.view addSubview:self.blurViewController.view];
[self.blurViewController didMoveToParentViewController:self];

// animate the self.blurViewController into view

কিছু অস্পষ্ট থাকলে আমাকে জানান, আমি সাহায্য করতে পেরে খুশি হব!


সম্পাদন করা

রঙিন অস্পষ্টতা ব্যবহার করার সময় ইউআইটিউলবার 7.0.3-এ পরিবর্তিত করা হয়েছে poss

আমরা রঙটি ব্যবহার করে সেট করতে সক্ষম হতাম barTintColor , তবে আপনি যদি এটি আগে করছিলেন তবে আপনাকে আলফা উপাদানটি 1 টিরও কম সেট করতে হবে অন্যথায় আপনার ইউআইটিলবার সম্পূর্ণরূপে অস্বচ্ছ বর্ণযুক্ত হবে no কোনও ঝাপসা নেই।

এটি নিম্নলিখিত হিসাবে অর্জন করা যেতে পারে: (মনে selfরাখা একটি subclass হয় UIToolbar)

UIColor *color = [UIColor blueColor]; // for example
self.barTintColor = [color colorWithAlphaComponent:0.5];

এটি অস্পষ্ট দর্শনকে একটি নীল-ইশ রঙ দেবে।


1
খারাপ মানুষ নয়। আমি আমার দৃষ্টিতে এই তিনটি লাইন ব্যবহার করেছি: self.backgroundColorView.opaque = NO; self.backgroundColorView.alpha = 0.5; self.backgroundColorView.backgroundColor = [UIColor colorWithWhite:0.3 alpha:1];তবে পটভূমিটি অস্পষ্ট করা হয়নি, কেবল একটি দুর্দান্ত ওভার এফেক্ট তৈরি করুন। যাইহোক আপনাকে ধন্যবাদ!
IgniteCoders

1
আমি এই কৌশলটি ব্যবহার করে কোনও ঝাপসা দেখছি না। এটি কেবল রঙিন ওভারলে তৈরি করে।
মুসিজেনিসিস

রঙিন ওভারলে আলফা 1 এর চেয়ে কম কিনা তা নিশ্চিত করুন আপনি ভিউ কন্ট্রোলার ছাড়াই একটি ইউআইটিুলবার ব্যবহার করতে পারেন যা আপনার প্রয়োজনের উপর নির্ভর করে সহজ হতে পারে।
স্যাম

ঝরঝরে কৌশল। আমি স্টোরিবোর্ডে আমার ভিউটি ইউআইটিুলবার ক্লাসে রূপান্তরিত করেছি, তারপরে দৃশ্যের ব্যাকগ্রাউন্ডটি সাফ রঙে পরিবর্তন করেছি। এটি একটি সাদা অস্পষ্ট ব্যাকগ্রাউন্ড দিয়েছে। আপনি যদি 1 টিরও কম আলফা তৈরি করেন তবে অস্পষ্ট প্রভাব চলে যাবে।
বদর

9

সিআইজিউশিয়ান ব্লুর ব্যবহার করে সুইফটে একটি দ্রুত বাস্তবায়ন এখানে দেওয়া হয়েছে:

func blur(image image: UIImage) -> UIImage {
    let radius: CGFloat = 20;
    let context = CIContext(options: nil);
    let inputImage = CIImage(CGImage: image.CGImage!);
    let filter = CIFilter(name: "CIGaussianBlur");
    filter?.setValue(inputImage, forKey: kCIInputImageKey);
    filter?.setValue("\(radius)", forKey:kCIInputRadiusKey);
    let result = filter?.valueForKey(kCIOutputImageKey) as! CIImage;
    let rect = CGRectMake(radius * 2, radius * 2, image.size.width - radius * 4, image.size.height - radius * 4)
    let cgImage = context.createCGImage(result, fromRect: rect);
    let returnImage = UIImage(CGImage: cgImage);

    return returnImage;
}

7

কাস্টম ব্লার স্কেল

আপনি UIVisualEffectView কাস্টম সেটিং এর সাথে চেষ্টা করে দেখতে পারেন -

class BlurViewController: UIViewController {
    private let blurEffect = (NSClassFromString("_UICustomBlurEffect") as! UIBlurEffect.Type).init()

    override func viewDidLoad() {
        super.viewDidLoad()
        let blurView = UIVisualEffectView(frame: UIScreen.main.bounds)
        blurEffect.setValue(1, forKeyPath: "blurRadius")
        blurView.effect = blurEffect
        view.addSubview(blurView)
    }   
}

আউটপুট: - জন্য blurEffect.setValue(1...& blurEffect.setValue(2.. এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন


3
আইওএসের পরবর্তী সংস্করণে এই প্যারামিটারটির নাম পরিবর্তন করা থাকলে এটি কাজ বন্ধ করবে will
এরিয়েল বোগডিজিউইচজ

@ অ্যারিলবোগডিজিউইকস বর্তমানে এটির কাজ করছে। ডাব্লুডব্লিউডিসিতে কোনও এপিআই প্রকরণ থাকলে আপডেট করব।
জ্যাক

উম্মম ... না, আপনি কখনও ব্যক্তিগত API গুলি অ্যাক্সেস করতে চান না। তারা একটি কারণে ব্যক্তিগত। এগুলি পরিবর্তন হবে, সেগুলি ভেঙে যাবে এবং / অথবা অ্যাপল আপনার অ্যাপ্লিকেশনটিকে প্রত্যাখ্যান করবে। অন্য পদ্ধতি ব্যবহার করুন, প্রচুর পরিমাণে আছে। হ্যাক সন্ধানের জন্য কুডোস, কিন্তু, প্রস্তাবিত নয়।
n13

@ জ্যাক এই উত্তরের জন্য আপনাকে অনেক ধন্যবাদ! এটি আমার সমস্যার একমাত্র সমাধান আমি খুঁজে পেয়েছি: অন্য দর্শনের অবস্থান অনুসারে একটি দৃষ্টি ঝাপসা করা। তবে, আমার এখনও আরও একটি প্রশ্ন রয়েছে have আমার ইউআইব্লুরএফেক্টের শীর্ষে আমি কি প্রাণবন্ত যোগ করতে পারি? যদি তাই হয়, কিভাবে? আমার ব্লারভিউয়ের উপরে কি এর জন্য আমার অন্য ভিউ তৈরি করা দরকার? আমি চেষ্টা করেছিলাম কিন্তু এটি ব্যবহার করার সময় সর্বদা ক্রাশ হয়ে যায় আমি (NSClassFromString("_UICustomVibrancyEffect") as! UIVibrancyEffect.Type).init()সত্যিই কিছু সাহায্যের প্রশংসা করব!
মরিৎজ

@ মরিটজ চেষ্টা করেন নি। তবে এটি কাজ করা উচিত y আপনি চেষ্টা করে দেখতে পারেন।
জ্যাক

7

ইউআইভিউপ্রোপার্টি অ্যানিম্যাটর ব্যবহার করে ব্যক্তিগত এপিআই দিয়ে হ্যাগলিং ছাড়াই কাস্টম ব্লার যুক্ত করার সহজ উপায় :

প্রথমে শ্রেণীর সম্পত্তি ঘোষণা করুন:

var blurAnimator: UIViewPropertyAnimator!

তারপরে আপনার অস্পষ্ট দৃশ্যটি এতে সেট করুন viewDidLoad():

let blurEffectView = UIVisualEffectView()
blurEffectView.backgroundColor = .clear
blurEffectView.frame = view.bounds
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.addSubview(blurEffectView)

blurAnimator = UIViewPropertyAnimator(duration: 1, curve: .linear) { [blurEffectView] in
    blurEffectView.effect = UIBlurEffect(style: .light)
}

blurAnimator.fractionComplete = 0.15 // set the blur intensity.    

দ্রষ্টব্য: এই দ্রবণটি UICollectionView/ UITableViewকোষগুলির জন্য উপযুক্ত নয়


1
আপনি যদি ইউআইভিআইজুয়ালএফেক্টভিউয়ের স্বচ্ছতা নিয়ন্ত্রণ করতে চান তবে এটিই একমাত্র সমাধান I
ডেনিস কুতলুবায়েভ

6

এখানে চিত্র বর্ণনা লিখুন

এক্সকোড থেকে আপনি এটি সহজেই করতে পারেন। এক্সকোড থেকে পদক্ষেপগুলি অনুসরণ করুন। আপনার ইউভিউ বা চিত্র দর্শনে ড্রেজ ভিজ্যুয়াল এফেক্ট ভিউ।

শুভ কোডিং :)


5

গৃহীত উত্তরটি সঠিক তবে এখানে একটি গুরুত্বপূর্ণ পদক্ষেপ অনুপস্থিত রয়েছে, যদি এই দৃষ্টিভঙ্গি - যার জন্য আপনি অস্পষ্ট ব্যাকগ্রাউন্ড চান - ব্যবহার করে উপস্থাপন করা হয়েছে

[self presentViewController:vc animated:YES completion:nil]

ডিফল্টরূপে, এটি অস্পষ্টতাটিকে অস্বীকার করবে কারণ ইউআইকিট উপস্থাপকের দৃষ্টিভঙ্গি সরিয়ে দেয়, যা আপনি আসলে ঝাপসা করছেন। সেই অপসারণটি এড়াতে, পূর্ববর্তীটির আগে এই লাইনটি যুক্ত করুন

vc.modalPresentationStyle = UIModalPresentationOverFullScreen;

বা অন্যান্য Overশৈলী ব্যবহার করুন ।


3

উদ্দেশ্য গ

UIVisualEffect *blurEffect;
blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
UIVisualEffectView *visualEffectView;
visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
visualEffectView.frame = self.accessImageView.bounds;
[self.accessImageView addSubview:visualEffectView];

SWIFT 3.0

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

থেকে: https://stackoverflow.com/a/24083728/4020910


2

ইউআইআইমেজএফেক্ট ব্যবহার করে

যে সমস্ত লোকেরা আরও নিয়ন্ত্রণ চায় তাদের জন্য আপনি অ্যাপলের UIImageEffectsনমুনা কোডটি ব্যবহার করতে পারেন ।

আপনি UIImageEffectsঅ্যাপলের বিকাশকারী লাইব্রেরি থেকে কোডটি অনুলিপি করতে পারেন : অস্পষ্ট এবং একটি চিত্র টিংটিং

এবং এটি কীভাবে প্রয়োগ করবেন তা এখানে:

#import "UIImageEffects.h"
...

self.originalImageView.image = [UIImageEffects imageByApplyingLightEffectToImage:[UIImage imageNamed:@"yourImage.png"]];

আমি কীভাবে তাড়াতাড়ি ব্যবহার করব
দেবজমে

2
func blurBackgroundUsingImage(image: UIImage)
{
    var frame                   = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height)
    var imageView               = UIImageView(frame: frame)
    imageView.image             = image
    imageView.contentMode       = .ScaleAspectFill
    var blurEffect              = UIBlurEffect(style: .Light)
    var blurEffectView          = UIVisualEffectView(effect: blurEffect)
    blurEffectView.frame        = frame
    var transparentWhiteView    = UIView(frame: frame)
    transparentWhiteView.backgroundColor = UIColor(white: 1.0, alpha: 0.30)
    var viewsArray              = [imageView, blurEffectView, transparentWhiteView]

    for index in 0..<viewsArray.count {
        if let oldView = self.view.viewWithTag(index + 1) {
            var oldView         = self.view.viewWithTag(index + 1)
            // Must explicitly unwrap oldView to access its removeFromSuperview() method as of Xcode 6 Beta 5
            oldView!.removeFromSuperview()
        }
        var viewToInsert        = viewsArray[index]
        self.view.insertSubview(viewToInsert, atIndex: index + 1)
        viewToInsert.tag        = index + 1
    }
}

1

এটি দুর্ঘটনাক্রমে পাওয়া গেছে, আমাকে সত্যিই দুর্দান্ত (অ্যাপলের ডুপ্লিকেটের কাছাকাছি) ফলাফল দেয় এবং এক্সিলারেশন ফ্রেমওয়ার্ক ব্যবহার করে। - http://pastebin.com/6cs6hsyQ * আমার লেখা নয়


8
এটি ভুল কপিরাইট সহ ডাব্লুডাব্লুডিসি 2013 এর আসলে অ্যাপল কোড।
Shmidt

ডাব্লুডাব্লুডিসি থেকে কোডগুলি কপিরাইটযুক্ত নয়, এবং কেবলমাত্র অর্থ প্রদানের সদস্যতা সহ সদস্যদের অ্যাক্সেসের অনুমতি রয়েছে?
সাফাদ

1
সম্ভবত, তবে উপরের কোডটি আমি গুগল ব্যবহার করে পেয়েছি। আমি কপিরাইটটি পরিবর্তন করি নি এবং আমি ধরে নিয়েছি (এবং এখনও ধরে নিই) এটির সঠিক কপিরাইট দাবি রয়েছে। অ্যাপল যদি তাতে একমত না হয় তবে তাদের এটিকে নেমে যাওয়ার জন্য তাদের প্রচেষ্টা করা উচিত। প্রাসঙ্গিকতা আমি দেখছি না।
জেক 15

1

এই উত্তরটি মিতজা সেমলিকের পূর্ববর্তী উত্তরের উপর ভিত্তি করে । আমি এটিকে সুইফট 3 এ রূপান্তর করেছি, কমেেন্টগুলিতে কী ঘটছে তার একটি ব্যাখ্যা যুক্ত করেছি, এটি একটি ইউআইভিউউকন্ট্রোলারের বর্ধিত করেছি যাতে যে কোনও ভিসি ইচ্ছামত কল করতে পারে, নির্বাচনী অ্যাপ্লিকেশনটি দেখানোর জন্য একটি অস্পষ্ট দৃষ্টিভঙ্গি যুক্ত করেছে এবং একটি সমাপ্তি ব্লক যুক্ত করেছে কলিং ভিউ কন্ট্রোলার অস্পষ্টতা সম্পূর্ণ হওয়ার পরে যা খুশি করতে পারে।

    import UIKit
//This extension implements a blur to the entire screen, puts up a HUD and then waits and dismisses the view.
    extension UIViewController {
        func blurAndShowHUD(duration: Double, message: String, completion: @escaping () -> Void) { //with completion block
            //1. Create the blur effect & the view it will occupy
            let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light)
            let blurEffectView = UIVisualEffectView()//(effect: blurEffect)
            blurEffectView.frame = self.view.bounds
            blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

        //2. Add the effect view to the main view
            self.view.addSubview(blurEffectView)
        //3. Create the hud and add it to the main view
        let hud = HudView.getHUD(view: self.view, withMessage: message)
        self.view.addSubview(hud)
        //4. Begin applying the blur effect to the effect view
        UIView.animate(withDuration: 0.01, animations: {
            blurEffectView.effect = blurEffect
        })
        //5. Halt the blur effects application to achieve the desired blur radius
        self.view.pauseAnimationsInThisView(delay: 0.004)
        //6. Remove the view (& the HUD) after the completion of the duration
        DispatchQueue.main.asyncAfter(deadline: .now() + duration) {
            blurEffectView.removeFromSuperview()
            hud.removeFromSuperview()
            self.view.resumeAnimationsInThisView()
            completion()
        }
    }
}

extension UIView {
    public func pauseAnimationsInThisView(delay: Double) {
        let time = delay + CFAbsoluteTimeGetCurrent()
        let timer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, time, 0, 0, 0, { timer in
            let layer = self.layer
            let pausedTime = layer.convertTime(CACurrentMediaTime(), from: nil)
            layer.speed = 0.0
            layer.timeOffset = pausedTime
        })
        CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, CFRunLoopMode.commonModes)
    }
    public func resumeAnimationsInThisView() {
        let pausedTime  = layer.timeOffset

        layer.speed = 1.0
        layer.timeOffset = 0.0
        layer.beginTime = layer.convertTime(CACurrentMediaTime(), from: nil) - pausedTime
    }
}

আমি নিশ্চিত করেছি যে এটি আইওএস 10.3.1 এবং আইওএস 11 উভয়ই কাজ করে


1

@ জোয়ের উত্তরের একটি গুরুত্বপূর্ণ পরিপূরক

এটি একটি অবস্থা যেখানে আপনি একটি ঝাপসা-পটভূমি উপস্থাপন করতে চান ক্ষেত্রে প্রযোজ্য UIViewControllerসঙ্গে UINavigationController

// suppose you've done blur effect with your presented view controller
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController];

// this is very important, if you don't do this, the blur effect will darken after view did appeared
// the reason is that you actually present navigation controller, not presented controller
// please note it's "OverFullScreen", not "OverCurrentContext"
nav.modalPresentationStyle = UIModalPresentationOverFullScreen;

UIViewController *presentedViewController = [[UIViewController alloc] init]; 
// the presented view controller's modalPresentationStyle is "OverCurrentContext"
presentedViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;

[presentingViewController presentViewController:nav animated:YES completion:nil];

উপভোগ করুন!


1

অস্পষ্ট চিত্র ফিরিয়ে দেওয়ার জন্য কেভের উত্তরের সুইফ্ট 3 সংস্করণ -

func blurBgImage(image: UIImage) -> UIImage? {
        let radius: CGFloat = 20;
        let context = CIContext(options: nil);
        let inputImage = CIImage(cgImage: image.cgImage!);
        let filter = CIFilter(name: "CIGaussianBlur");
        filter?.setValue(inputImage, forKey: kCIInputImageKey);
        filter?.setValue("\(radius)", forKey:kCIInputRadiusKey);

        if let result = filter?.value(forKey: kCIOutputImageKey) as? CIImage{

            let rect = CGRect(origin: CGPoint(x: radius * 2,y :radius * 2), size: CGSize(width: image.size.width - radius * 4, height: image.size.height - radius * 4))

            if let cgImage = context.createCGImage(result, from: rect){
                return UIImage(cgImage: cgImage);
                }
        }
        return nil;
    }

1

2019 কোড

আশ্চর্যজনক @ অ্যাডামবার্ডন কৌশলটি ব্যবহার করে এখানে একটি পূর্ণ উদাহরণ।

@IBDesignable class ButtonOrSomethingWithBlur: UIButton {

    var ba: UIViewPropertyAnimator?
    private lazy var blurry: BlurryBall = { return BlurryBall() }()

    override func didMoveToSuperview() {
        super.didMoveToSuperview()

        // Setup the blurry ball.  BE SURE TO TEARDOWN.
        // Use superb trick to access the internal guassian level of Apple's
        // standard gpu blurrer per stackoverflow.com/a/55378168/294884

        superview?.insertSubview(blurry, belowSubview: self)
        ba = UIViewPropertyAnimator(duration:1, curve:.linear) {[weak self] in
            // note, those duration/curve values are simply unusued
            self?.blurry.effect = UIBlurEffect(style: .extraLight)
        }
        ba?.fractionComplete = live.largeplaybutton_blurfactor
    }

    override func willMove(toSuperview newSuperview: UIView?) {

        // Teardown for the blurry ball - critical

        if newSuperview == nil { print("safe teardown")
            ba?.stopAnimation(true)
            ba?.finishAnimation(at: .current)
        }
    }

    override func layoutSubviews() { super.layoutSubviews()
        blurry.frame = bounds, your drawing frame or whatever
    }

{পাশাপাশি: একটি সাধারণ আইওএস ইঞ্জিনিয়ারিং বিষয় হিসাবে didMoveToWindowআপনার চেয়ে বেশি উপযুক্ত হতে পারেdidMoveToSuperview । দ্বিতীয়ত, আপনি টিয়ারডাউনটি করার জন্য অন্য কোনও উপায় ব্যবহার করতে পারেন তবে টিয়ারডাউনটি সেখানে দেখানো দুটি লাইনের কোড is

BlurryBallশুধু একটি UIVisualEffectView। ভিজ্যুয়াল এফেক্ট ভিউয়ের জন্য ইনিটগুলি লক্ষ্য করুন। আপনার যদি গোলাকার কোণগুলি বা যা কিছু প্রয়োজন হয় তবে এই শ্রেণিতে এটি করুন।

class BlurryBall: UIVisualEffectView {

    override init(effect: UIVisualEffect?) { super.init(effect: effect)
        commonInit() }

    required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder)
        commonInit() }

    private func commonInit() {
        clipsToBounds = true
        backgroundColor = .clear
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        layer.cornerRadius = bounds.width / 2
    }
}

0

অ্যাপল ইউআইআইমেজ + ইমেজএফেক্টস নামে পরিচিত ইউআইআইমেজ ক্লাসের জন্য একটি এক্সটেনশন সরবরাহ করেছে। এই শ্রেণীতে আপনার দৃষ্টি ঝাপসা করার জন্য আপনার পছন্দসই পদ্ধতি রয়েছে


1
আপনি এই পদ্ধতি সম্পর্কে আরও তথ্য ভাগ করতে পারেন?
মাইক লরেন


0

গৃহীত উত্তরের জন্য সরবরাহ করা সমাধানের জন্য এখানে সুইফট ২.০ কোডটি রয়েছে :

    //only apply the blur if the user hasn't disabled transparency effects
    if !UIAccessibilityIsReduceTransparencyEnabled() {
        self.view.backgroundColor = UIColor.clearColor()

        let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark)
        let blurEffectView = UIVisualEffectView(effect: blurEffect)
        //always fill the view
        blurEffectView.frame = self.view.bounds
        blurEffectView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]

        self.view.addSubview(blurEffectView) //if you have more UIViews, use an insertSubview API to place it where needed
    } else {
        self.view.backgroundColor = UIColor.blackColor()
    }

0

যদি টেবিলভিউয়ের জন্য একটি গা dark় অস্পষ্ট দর্শন যোগ করা হয় তবে এটি এটি সুন্দর করে তোলে:

tableView.backgroundColor = .clear
let blurEffect = UIBlurEffect(style: .dark)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = tableView.bounds
blurEffectView.autoresizingMask = [.flexibleHeight, .flexibleWidth]


// Assigning blurEffectView to backgroundView instead of addSubview to tableView makes tableView cell not blocked by blurEffectView 
tableView.backgroundView = blurEffectView

0

"ব্লার সাথে ভিজ্যুয়াল এফেক্ট ভিউ" এবং "ব্লার এবং ভাইব্রান্সির সাথে ভিজ্যুয়াল এফেক্ট ভিউ" ব্যবহার করে আপনি সরাসরি আপনার ব্যাকগ্রাউন্ড ব্লার করতে পারেন।

আইওএস অ্যাপ্লিকেশনে ব্লার ব্যাকগ্রাউন্ড তৈরির জন্য আপনাকে যা করতে হবে তা হ'ল ...

  1. অবজেক্ট লাইব্রেরিতে গিয়ে "ব্লার সাথে ভিজ্যুয়াল এফেক্ট ভিউ" অনুসন্ধান করুন

পদক্ষেপ 1 চিত্র

  1. আপনার স্টোরিবোর্ডে "অস্পষ্ট প্রভাবের দৃষ্টিভঙ্গিটি" সাথে টানুন এবং সেটআপ করুন ...

পদক্ষেপ 2 চিত্র

  1. শেষ পর্যন্ত ... আপনি আপনার অ্যাপের পটভূমিটি অস্পষ্ট করে তোলেন!

অ্যাপ্লিকেশন বিন্যাস যে কোনও বোতামে ক্লিক করার আগে!

বোতামটি ক্লিক করার পরে অ্যাপ্লিকেশন ভিউ যা পুরো অ্যাপ্লিকেশনটির পটভূমি ঝাপসা করে তোলে!


0

যদি এটি যে কাউকে সহায়তা করে তবে জর্ডান এইচ এর উত্তরের ভিত্তিতে আমি তৈরি একটি সুইফট এক্সটেনশন এটি সুইফট 5 এ লেখা হয়েছে এবং এটি উদ্দেশ্য সি থেকে ব্যবহার করা যেতে পারে here

extension UIView {

    @objc func blurBackground(style: UIBlurEffect.Style, fallbackColor: UIColor) {
        if !UIAccessibility.isReduceTransparencyEnabled {
            self.backgroundColor = .clear

            let blurEffect = UIBlurEffect(style: style)
            let blurEffectView = UIVisualEffectView(effect: blurEffect)
            //always fill the view
            blurEffectView.frame = self.self.bounds
            blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

            self.insertSubview(blurEffectView, at: 0)
        } else {
            self.backgroundColor = fallbackColor
        }
    }

}

দ্রষ্টব্য: আপনি যদি কোনও পাঠ্যকে প্রভাবিত না করে কোনও ইউআইএলবেলের পটভূমিটি অস্পষ্ট করতে চান তবে আপনার একটি কন্টেইনার ইউআইভিউউ তৈরি করা উচিত, ইউআইইউবেলটিকে কনটেইনারটিতে ইউআইভিউউকে একটি সংক্ষিপ্তসার হিসাবে যুক্ত করা উচিত, ইউআইআইএলএল এর ব্যাকগ্রাউন্ড কালারটি ইউআইসিএলআর। : UIBlurEffect.Style, ফ্যালব্যাক কালার: UIColor) কনটেইনার ইউআইভিউতে। সুইফট 5 এ লিখিত এর একটি দ্রুত উদাহরণ এখানে:

let frame = CGRect(x: 50, y: 200, width: 200, height: 50)
let containerView = UIView(frame: frame)
let label = UILabel(frame: frame)
label.text = "Some Text"
label.backgroundColor = UIColor.clear
containerView.addSubview(label)
containerView.blurBackground(style: .dark, fallbackColor: UIColor.black)

-1

সুইফট 4:

ওভারলে বা পপআপ ভিউ যুক্ত করতে আপনি যে ধারক পাতায় একটি নিখরচায় নিয়ন্ত্রণ কন্ট্রোলার পান সেটিকেও ব্যবহার করতে পারেন (আপনি সাধারণ প্যালেট / লাইব্রেরি থেকে ধারক দেখুন পান)

পদক্ষেপ:

কনটেইনার ভিউয়ের বিষয়বস্তু প্রদর্শিত হবে তখন এটিকে হালকা করার জন্য একটি ভিউ (ছবিতে ভিউফোর্ডকন্টেনার) রাখুন যা এই ধারক ভিউটি ধারণ করে। প্রথম ভিউ কন্ট্রোলারের অভ্যন্তরে আউটলেটটি সংযুক্ত করুন

1 ম ভিসি যখন লোড হয় তখন এই দৃশ্যটি লুকান

বোতামটি ক্লিক করা হলে চিত্রের বিবরণ প্রবেশ করুন ক্লিক করুন

কনটেইনার ভিউ সামগ্রীটি প্রদর্শিত হবে তখন এই দর্শনটি ডিমে করতে ভিউ ব্যাকগ্রাউন্ডটি কালো এবং अस्पष्टতা 30% এ সেট করুন

আমি অন্যান্য স্ট্যাকওভারফ্লো প্রশ্নে পপভিউ ভিউ তৈরির একটি উত্তর যুক্ত করেছি https://stackoverflow.com/a/49729431/5438240


-3

সহজ উত্তর হ'ল একটি সংক্ষিপ্তসার যুক্ত করুন এবং এটি আলফা পরিবর্তন করুন।

UIView *mainView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
UIView *subView = [[UIView alloc] initWithFrame:popupView.frame];
UIColor * backImgColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"blue_Img.png"]];
subView.backgroundColor = backImgColor;
subView.alpha = 0.5;
[mainView addSubview:subView];
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.