কীভাবে দ্রুতগতিতে নেভিগেশনবারের সীমানা মুছবেন?


131

আমি ভাগ্য ছাড়া নেভিগেশন বারস সীমানা অপসারণ করার চেষ্টা করছি। আমি গবেষণা করেছি এবং লোকেরা ছায়া ইমেজ এবং ব্যাকগ্রাউন্ড ইমেজটি শূন্য করতে বলেছে বলে মনে হচ্ছে, তবে এটি আমার ক্ষেত্রে কার্যকর হয় না।

আমার কোড

    self.navigationController?.navigationBar.barTintColor = UIColor(rgba: "#4a5866")
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: ""), forBarMetrics: UIBarMetrics.Default)
    self.navigationController?.navigationBar.shadowImage = UIImage(named: "")

চিত্রণ:

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

উত্তর:


309

সমস্যাটি এই দুটি লাইনের সাথে:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: ""), forBarMetrics: UIBarMetrics.Default)
self.navigationController?.navigationBar.shadowImage = UIImage(named: "")

যেহেতু আপনার কোনও UIImage(named: "")নামবিহীন কোনও চিত্র নেই, প্রত্যাবর্তন nil, যার অর্থ ডিফল্ট আচরণ লিক ইন:

যখন অ-নিল, ডিফল্ট ছায়া চিত্রের পরিবর্তে একটি কাস্টম ছায়া চিত্র show একটি কাস্টম ছায়া দেখানোর জন্য, একটি কাস্টম ব্যাকগ্রাউন্ড চিত্রটিও অবশ্যই সেট-আবশ্যক: ব্যাকগ্রাউন্ডআইমেজ: বারম্যাট্রিক্সের জন্য: (যদি ডিফল্ট ব্যাকগ্রাউন্ড চিত্র ব্যবহার করা হয়, তবে ডিফল্ট ছায়া চিত্র ব্যবহার করা হবে)।

আপনার সত্যিকারের খালি চিত্রের প্রয়োজন, তাই কেবলমাত্র এটি দিয়ে শুরু করুন UIImage():

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()

2
এই উত্তরটি সত্যিই কাজ করে। কারণ যদি স্বীকৃত উত্তর (কোড) ব্যবহার করা হয় তবে এটির সরঞ্জামদণ্ডের চিত্রগুলি ভিভ করে।
সের্গেই ক্র্যাসুক

1
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। ইউআইএনএভিগেশনবার.অ্যাপিয়ারেন্স ()
হেইনিরিচ

1
এটি সুইফট ৩ এর গ্রহণযোগ্য উত্তর হওয়া উচিত। স্বীকৃত উত্তরটি আমার পক্ষে সুইফট ২ তে কাজ করেছিল, তবে সুইফট 3
তে

1
সুইফট 3-এর জন্য আপনার কিছুটা আলাদাভাবে লিখতে হবে: স্ব.নিভিশনকন্ট্রোলার?। ন্যাভিগেশনবার.সেটব্যাকগ্রাউন্ড ইমেজ (ইউআইআইমেজ (), এর জন্য: ইউআইবারমেট্রিক্স.ডিফল্ট) সেলোভ্যাভিগেশন কন্ট্রোলার? .্যাভিগেশনবার.শাদোআইমেজ = ইউআইআইজেজ ()
চেতন

5
এই পদ্ধতিটি আইওএস 11
স্টিফেনকে

54

সুইফট 4 এবং সুইফট 5

সীমানা সরানো হচ্ছে:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for:.default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.layoutIfNeeded()

সীমানা পুনরুদ্ধার:

self.navigationController?.navigationBar.setBackgroundImage(nil, for:.default)
self.navigationController?.navigationBar.shadowImage = nil
self.navigationController?.navigationBar.layoutIfNeeded()

2
নিখুঁত উত্তর :)
পিজেআর

আমাদের এখানে কি লেআউটআইফিড () প্রয়োজন?
korgx9

1
হ্যাঁ korgx9, আমাদের এটি দরকার। অন্যথায় এটি পরবর্তী অঙ্কন হওয়া পর্যন্ত রঙ পরিবর্তন করবে না।
সাজ্জাদ হিছাইন খান

37

এটি পুরোপুরি ছায়া চিত্রটি সরিয়ে ফেলবে

for parent in self.navigationController!.navigationBar.subviews {
 for childView in parent.subviews {
     if(childView is UIImageView) {
         childView.removeFromSuperview()
     }
 }
}

1
আপনি বিস্তারিত বলতে পারেন?
Kmeixner

1
আমার জন্যও এই সমাধানটি কাজ করে, যখন @ নেট কুকের উত্তর কার্যকর হয় না। : এস
লুকা দাভানজো

2
পবিত্র শায়খ !! সমস্ত অনুসন্ধানের পরেও এটি কেবল কাজ করেছে।
তুয়ান আনহু

এটি কাজ করে, তবে আমার নেভিগেশন বারে একটি মেনু আইকন রয়েছে এবং এটি অদৃশ্য হয়ে গেছে: / আমি কেবল বর্ডারটি মুছে ফেলা চাই। সহায়তা: /
স্টেফি সাম্যানিয়েগো

এটি আমার পক্ষে কাজ করেছে তবে নতুন ভিউকন্ট্রোলারকে চাপ দেওয়ার পরে এটি সেখান থেকে লাইনটি সরিয়ে দেয়। আমি কীভাবে এটি থেকে রোধ করতে পারি?
অনিরুদ্ধ মহলে

36

সুইফট 2 এর মাধ্যমে আপনি এটি এভাবে করতে পারেন:

অ্যাপডেলিগেট ফাইল

ফানক অ্যাপ্লিকেশনটির অভ্যন্তরে (..., ফিনিশল্যাঞ্চিং উইথঅপশনস লঞ্চঅ্যাপশনগুলি: ...)

UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarMetrics: .Default)

সুইফট 3 এর জন্য:

UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)

সঠিক উত্তর.
এড।

এটাই তো বিস্তৃত উত্তর!
প্রথম

বিজোড় স্থানে এগুলি লেখার চেয়ে এপিডেলিজেটে এ জাতীয় দরকারী ডিফল্ট লেখার চেয়ে ভাল। সঠিক উত্তর :)
মোঃ রইস

35

এটি কেবল ইউআইএনএভিগেশনবারের এক্সটেনশনে লিখুন

extension UINavigationBar {

    func shouldRemoveShadow(_ value: Bool) -> Void {
        if value {
            self.setValue(true, forKey: "hidesShadow")
        } else {
            self.setValue(false, forKey: "hidesShadow")
        }
    }
}

এবং আপনার ভিউ নিয়ন্ত্রণকারীতে ...

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.navigationBar.shouldRemoveShadow(true)        
}

এবং যে কোনও ভিউকন্ট্রোলারের পক্ষে এটি পূর্বাবস্থায় ফিরে পেতে, কেবল মিথ্যা পাস করুন।


এটি দুর্দান্ত কাজ করে তবে নাভি স্ট্যাকের সমস্ত ভিসিএসের জন্য এটি লুকিয়ে থাকে। আপনি যদি এটি ভিসি 1 তে ব্যবহার করেন এবং ভিসি 1 ভিসি 2 তে চাপ দিতে পারে তবে এটি ভিসি 2 এও লুকিয়ে থাকবে। ভিসি 2 এ ছায়া দেখানোর জন্য আপনাকে এটিকে ভিউডিডলয়েডে মিথ্যাতে সেট করতে হবে। সমস্যাটি যখন আপনি ভিসি 1 এ ফিরে যান তখন এটি আবার দেখাবে কারণ এটি ভিসি 2 এ রিসেট হয়েছিল। আপনার পিছনে পিছনে যেতে যুক্তি ব্যবহার করতে হবে যা এটির পক্ষে উপযুক্ত নাও হতে পারে। তবে আপনি যদি চান না যে ছায়ার চিত্রটি কোনও ভিসিএসে দেখাতে না পারে তবে এটি যাওয়ার সহজ উপায়
ল্যান্স সামেরিয়া

ধরা যাক আমাদের 5 ভিউ কনট্রোলার সহ ভিউ কন্ট্রোলারগুলির একটি স্ট্যাক রয়েছে (এবং আমরা প্রথমটি ছায়াটি গোপন করেছি) এখন কেবলমাত্র তৃতীয় দর্শনীয় নিয়ন্ত্রণকারীর জন্য, আমরা "ছায়াটি গোপন করতে চাই না So সুতরাং, আমি সেই পদ্ধতিটি ভ্যালভিয়ারের সাথে FALSE এবং তৃতীয় ভিউ কনট্রোলারের ভিড উইলডিস্পায়ারে সত্য সহ কল ​​করব That's এটাই লাগে!
গৌরব চন্দ্রনা

আপনার একেবারে সঠিক, ভাল চিন্তা! ভাববেন না যে আমি আপনার উত্তরটি ছিটকেছি কারণ এটি অত্যন্ত সংক্ষিপ্ত এবং দক্ষ, আমি এটিও ভোট দিয়েছি। আমি এটি এবং ত্রুটি বার্তাগুলির জন্য নাভারটি অপসারণ করতে এটি ব্যবহার করি। আমি যে সমস্যাটি পেয়েছি তা ভিসি 1 এ অপসারণ করার সময় এটি ভিসি 2 দেখানোর সময় ছিল তবে যদি ভিসি 2 তে কোনও ত্রুটি ঘটে থাকে তবে এটি ভিউউইলডিস্পিয়ারে অপসারণ কাজ নাও করতে পারে। তবে আবার এটি একটি খুব অনন্য পরিস্থিতি। আমি সাধারণ ক্ষেত্রে ব্যবহারের জন্য ভিউ উইলডিস্পিয়ার আইডিয়াটি পছন্দ করি এবং এটি আপনার উত্তরে যুক্ত করা উচিত। আপনার কোড নির্বিশেষে কাজ করে এবং এটি ছায়া অপসারণের একটি সহজ উপায়! 👍🏿👍🏿
ল্যান্স সামেরিয়া

একটি যাদুমন্ত্র মত কাজ করে. এটি নিশ্চিত করতে চেয়েছিলেন যে এটি ব্যক্তিগত সেটিংস নয়?
inokey

2
এটি একটি দুর্দান্ত উত্তর! আমি একটি উত্তর যুক্ত করেছি যা কোডটি প্রবাহিত করে।
স্কট গার্ডনার

13

রঙিন সেট barStyleকরার .Blackআগে সেট করুন:

self.navigationController?.navigationBar.translucent = false
self.navigationController?.navigationBar.barStyle = .Black
self.navigationController?.navigationBar.barTintColor = UIColor.blueColor()

এটা আসলে এলোমেলো যে এটি আসলে কাজ করে? বা আমি overth سوچ করছি?
জো

@ জো এটি ভালভাবে এখানে কাজ করছে :-) এটি কি আপনার জন্য কাজ করে না?
gpbl

এটি জিনিস, এটি কাজ করে। আমি শুধু যদি কেন barStyle কালো তাহলে নীল :) পুরো barTintColor সক্রিয় বাঁক হিসেবে একটি ব্যাখ্যা হল হতাশ করছি
জো

সম্ভবত এটি কালো এবং
অস্বচ্ছকে

আমি এটি ব্যবহার করার চেষ্টা করেছি, এবং এটি নীচের লাইনটি সরিয়ে ফেলবে তবে যদি সাদা রঙের বার টিন্ট ব্যবহার করে শিরোনামটি দৃশ্যমান না হয়: /
রাইলিদেভ

11

সুইফট 5

হেয়ারলাইনটি লুকানোর জন্য সেটব্যাকগ্রাউন্ড ইমেজ / শ্যাডো ইমেজ ব্যবহার করার সময়, কিছুটা বিলম্ব হয়। এই পদ্ধতিটি বিলম্ব অপসারণ করে। গিরগিটি ফ্রেমওয়ার্কের কৃতিত্ব । এই পদ্ধতিটি তারা ব্যবহার করে (ওবিজিতে)


extension UINavigationController {
    func hideHairline() {
        if let hairline = findHairlineImageViewUnder(navigationBar) {
            hairline.isHidden = true
        }
    }
    func restoreHairline() {
        if let hairline = findHairlineImageViewUnder(navigationBar) {
            hairline.isHidden = false
        }
    }
    func findHairlineImageViewUnder(_ view: UIView) -> UIImageView? {
        if view is UIImageView && view.bounds.size.height <= 1.0 {
            return view as? UIImageView
        }
        for subview in view.subviews {
            if let imageView = self.findHairlineImageViewUnder(subview) {
                return imageView
            }
        }
        return nil
    }
}

1
এফডব্লিউআইডাব্লু, এটিই একমাত্র সমাধান যা আইওএস 13.4 এ আমার জন্য কাজ করেছিল ...
কেভিনস্টুবার

9

লুকা দাভানজোর উত্তর দুর্দান্ত, তবে এটি আইওএস 10 তে কাজ করে না আমি আইওএস 10 এবং নীচে এটির জন্য এটি পরিবর্তন করেছি।

for parent in navigationController!.view.subviews {
    for child in parent.subviews {
        for view in child.subviews { 
            if view is UIImageView && view.frame.height == 0.5 {
                view.alpha = 0
            }
        }
    }
}

আপনি ইউআইএনএভিগেশন কন্ট্রোলারও প্রসারিত করতে পারেন এবং এটিকে কল করে দিতে পারেন। removeFromSuperview()লাইনে আইওএস 10 এ কাজ করবে না, তাই আমি আলফাকে 0 তে সেট করে রেখেছি যাতে এই এক কলটি সর্বত্রই সামঞ্জস্যপূর্ণ।


ভাল ক্যাচ, নেভিগেট করার সময় কিছু ভিউ নিয়ন্ত্রণকারীদের মধ্যে ছায়াটি দেখানোর / লুকানোর কোনও উপায়?
আশাকান.এইচ

পরিবর্তে আপনার যে উচ্চতা রয়েছে তা পরীক্ষা করা উচিত height >= 1.0। আইফোন মডেলগুলিতে একটি 3x রেটিনা স্ক্রিন রয়েছে (যেমন 8 প্লাস, এক্সআর ...) হেয়ারলাইনের উচ্চতা 0.33 0.3
fl034

7

সুইট 3+ এ ইউআইএনএভিগেশন বার থেকে সীমানা সরাতে, ব্যবহার করুন:

UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
UINavigationBar.appearance().isTranslucent = false

5

দ্রুত 3 জন্য

মধ্যে viewDidLoadপদ্ধতি

navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage = UIImage()


4

কেউ ভাবছেন এমন ক্ষেত্রে সুইফট 4-এর জন্য আপডেট

navigationBar.shadowImage = UIImage()
navigationBar.backIndicatorImage = UIImage()

এটি এখন কম ভার্জোজ।


2

আপনি যদি পটভূমির রঙ পরিবর্তন না করে এটি করতে চান তবে এই উপায়:

// Remove the border ImageView from the NavigationBar background
func hideBottomBorder() {
    for view in navigationBar.subviews.filter({ NSStringFromClass($0.dynamicType) == "_UINavigationBarBackground" }) as [UIView] {
        if let imageView = view.subviews.filter({ $0 is UIImageView }).first as? UIImageView {
            imageView.removeFromSuperview()
        }
    }
}

দ্রষ্টব্য: এটি কোনও প্রোডাকশন অ্যাপে ক্রাশ হতে পারে। স্পষ্টতই নেভিগেশনবারটি এর দৃশ্যটি অদৃশ্য হওয়া পছন্দ করে না


2

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

navigationController?.navigationBar.setValue(true, forKey: "hidesShadow") ভিউউইলঅ্যাপটিতে এই পদ্ধতিটি ব্যবহার করে ছায়া বারটি বর্তমান দৃশ্যমান দর্শনীয় নিয়ামকটিতে লুকানো রয়েছে।

এই 2 টি পদ্ধতি ব্যবহার করে

navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
navigationController?.navigationBar.setValue(false, forKey: "hidesShadow")

দৃষ্টিতে উইলডিস্পিয়ারে ঝলক এখনও ঘটে কিন্তু কেবল যখন ছায়া চিত্রটি আবার প্রদর্শিত হয় এবং নেভিগেশন বারে নিজেই আসে না।

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // 1. hide the shadow image in the current view controller you want it hidden in
    navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
    navigationController?.navigationBar.layoutIfNeeded()
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(true)

    // 2. show the shadow image when pushing or popping in the next view controller. Only the shadow image will blink
    navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
    navigationController?.navigationBar.setValue(false, forKey: "hidesShadow")
    navigationController?.navigationBar.layoutIfNeeded()
}

1

সুইফট 3-এর জন্য আপনার কিছুটা ভিন্নভাবে লেখা উচিত:

 self.navigationController?.navigationBar.setBackgroundImage(UIImage(),
    for: UIBarMetrics.default)
   self.navigationController?.navigationBar.shadowImage = UIImage()


1

অ্যাপ প্রতিনিধি

UINavigationBar.appearance().setBackgroundImage(UIImage(), for: UIBarMetrics.default)
UINavigationBar.appearance().shadowImage = UIImage()

1

আপনি যদি কেবল নীচের লাইনটি সরাতে এবং ন্যাভিগেশনবারের শক্ত রঙ রাখতে চান তবে কোডডের এই লাইনগুলিকে ভিডডাইডলোড করুন: সুইফট 3, 4:

navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.isTranslucent = false

সালাম


0

সীমানা লাইনটি একটি ইউআইআইমেজভিউ এবং একটি সাবউভিটি সরানো যা কোনও চিত্র ভিউ যা ইউআইআইমেজভিউয়ের সাথে বারবটোন আইটেমগুলি সরিয়ে ফেলবে। নীচে কোড আপনাকে এটি সরাতে সহায়তা করবে। আশা করি এটি আমার মতো সমস্যার মুখোমুখি এমন কাউকে সহায়তা করবে।

for parent in self.navigationController!.navigationBar.subviews {
        for childView in parent.subviews {
            if childView.frame.height == 0.5 {
                childView.removeFromSuperview()
            }
        }
    }

সীমানা ইউআইআইজেইভিউউউউইউথের উচ্চতা মাত্র 0.5. তাই এই কোডটি কেবল এটি সরিয়ে দেয়।


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

0

অ্যাপডেলিগেটের মধ্যে , এটি বিশ্বব্যাপী নাভবারের ফর্ম্যাটটি পরিবর্তন করেছে এবং নীচের লাইন / সীমানাটি সরিয়ে ফেলে:

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarPosition: UIBarPosition.Any, barMetrics: UIBarMetrics.Default)
    UINavigationBar.appearance().shadowImage = UIImage()
    UINavigationBar.appearance().tintColor = UIColor.whiteColor()
    UINavigationBar.appearance().barTintColor = UIColor.redColor()
    UINavigationBar.appearance().translucent = false
    UINavigationBar.appearance().clipsToBounds = false
    //UINavigationBar.appearance().backgroundColor = UIColor.redColor()
    UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : (UIFont(name: "FONT NAME", size: 18))!, NSForegroundColorAttributeName: UIColor.whiteColor()] }

নির্দিষ্ট ভিসিতে ভিন্ন কিছু বাস্তবায়ন করতে পরিচালিত হয়নি, তবে এটি 90% লোককে সহায়তা করবে


ইউআইএনএভিগেশনবার.অ্যাপিয়ারেন্স ()। ব্যাকগ্রাউন্ড কালার = ইউআইকিওল.আরড কালার () দরকার নেই।
সাবিল্যান্ড 11'27

0

এটি নেট কুক উত্তরের 3 বেসের তল্টে উত্তর

   self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
    self.navigationController?.navigationBar.shadowImage = UIImage()

0

আইওএস 11 এবং সুইফট 4 আপনি সীমানাটি সরাতে চাইলে কিন্তু নেভিগিতনবারকে রূপান্তর করতে না চাইলে আপনার অনুসরণ করার চেষ্টা করা উচিত
self.navigationBar.shadowImage = UIImage()


0

আপনার কাস্টম নেভিগেশনে নিয়ন্ত্রণকারী এই লাইনগুলি যুক্ত করুন:

self.navigationBar.setBackgroundImage(UIImage(), for:.default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.layoutIfNeeded()

গুরুত্বপূর্ণ তথ্য

শেষ লাইনটি গুরুত্বপূর্ণ যদি আপনি প্রথম লাইন ভিউডিডলড () পদ্ধতিটি ব্যবহার করেন তবে নেভিগেশনকন্ট্রোলারকে এনএভি বার পুনরায় চিত্রিত করা উচিত তবে এনএভি বারটি আঁকার আগে আপনি সহজেই ভিউউইলঅ্যাপিয়ার () পদ্ধতিতে বিন্যাসআফনেড () ব্যতীত এটিকে ব্যবহার করতে পারেন nav


0

জ্যাক চেনের সুইফিয়ার পদ্ধতি:

extension UINavigationController {

    var isHiddenHairline: Bool {
        get {
            guard let hairline = findHairlineImageViewUnder(navigationBar) else { return true }
            return hairline.isHidden
        }
        set {
            if let hairline = findHairlineImageViewUnder(navigationBar) {
                hairline.isHidden = newValue
            }
        }
    }

    private func findHairlineImageViewUnder(_ view: UIView) -> UIImageView? {
        if view is UIImageView && view.bounds.size.height <= 1.0 {
            return view as? UIImageView
        }

        for subview in view.subviews {
            if let imageView = self.findHairlineImageViewUnder(subview) {
                return imageView
            }
        }

        return nil
    }
}

ব্যবহার:

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationController?.isHiddenHairline = true
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        navigationController?.isHiddenHairline = false
    }

0
let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.configureWithTransparentBackground()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.