ইউআইভিউউকে মুখোশ দেওয়ার জন্য এবং বৃত্তাকার কোণগুলি দেওয়ার জন্য স্টোরিবোর্ড ব্যবহার করবেন?


102

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

স্টোরিবোর্ডের মধ্যে এটি করার কোনও উপায় আছে কি? কেবল জিজ্ঞাসা করছেন কারণ মনে হচ্ছে স্টোরিবোর্ডে গোলাকার কোণ তৈরি করা উপস্থাপনা এবং যুক্তির মধ্যে আরও স্পষ্টতর সীমানা রাখে।


উত্তর:


271

হ্যাঁ, আমি এটি ব্যবহার করি তবে এর আগে এমন প্রশ্নের ইতিমধ্যে বহুবার উত্তর দেওয়া হয়েছিল।

তবে যাইহোক ইন্টারফেস বিল্ডারে। আপনাকে এটির মতো ব্যবহারকারী সংজ্ঞায়িত রানটাইম বৈশিষ্ট্য যুক্ত করতে হবে:

layer.masksToBounds Boolean YES
layer.cornerRadius Number {View's Width/2}

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

এবং সক্ষম করুন

Clips subviews

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

ফলাফল:

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


আমি কোথায় ব্যবহারকারী সংজ্ঞায়িত রানটাইম বৈশিষ্ট্য যুক্ত করতে পারি?
হেনসন ফ্যাং

আমি প্রথম চিত্রটি দেখানোর মতোই তারপরে ডান ফলকে তৃতীয় আইকনটি নির্বাচন করুন ব্যবহারকারী সংজ্ঞায়িত রানটাইম বৈশিষ্ট্যগুলি মূল পথ, প্রকার, মান যুক্ত করতে নীচের আইটেমটি ক্লিক করুন
3:58

4
আপনি কি সীমানা ব্যাসার্ধকে গতিময় করতে পারেন তাই এটি সর্বদা প্রস্থের 50% হয় বা এটি স্ট্যাটিক পূর্ণসংখ্যা হওয়া দরকার?
ক্র্যাশলোট

4
আমি যতদূর জানি, কেবল স্থির মান।
ওরাফট চোকরতানসোমব্যাট

4
শুধু এফওয়াইআই, আমার মতো যদি আপনি এখানে এসে ভেবেছিলেন যে এটি লঞ্চস্ক্রিন.স্টোরবোর্ডে কাজ করবে তবে তা হয় না। আপনি পাবেন: Error: Launch screens may not use user defined runtime attributes. দেখে মনে হচ্ছে আপনার যদি লঞ্চস্ক্রিনে কোনও রাউন্ড চিত্রের প্রয়োজন হয় তবে আপনি বিকল্পগুলির বাইরে রয়েছেন।
কোড নক্স

22

আপনি এটি স্টোরিবোর্ডে ব্যবহারকারীর সংজ্ঞায়িত বৈশিষ্ট্য ব্যবহার করে করতে পারেন। আপনি যে দৃশ্যটি দেখতে চান এবং এটির পরিচয় পরিদর্শকটি খুলতে চান তা নির্বাচন করুন। ইন ব্যবহারকারী বর্ণিত রানটাইম আরোপ করা অধ্যায়, নিম্নলিখিত দুটি এন্ট্রি যোগ করুন:

  • মূল পথ:, layer.cornerRadiusপ্রকার: সংখ্যা, মান: (যে ব্যাসার্ধ আপনি চান)
  • মূল পথ layer.masksToBounds:, প্রকার: বুলিয়ান, মান: পরীক্ষিত

আপনাকে QuartzKitআপনার দর্শনের সাথে সম্পর্কিত ক্লাস ফাইলটি (যদি থাকে) আমদানি করতে হতে পারে তবে আমি শপথ করছি যে আমি এটি না করে কাজ করতে পেরেছি। আপনার ফলাফল বিভিন্ন হতে পারে।

সম্পাদনা: গতিশীল ব্যাসার্ধের উদাহরণ

extension UIView {

    /// The ratio (from 0.0 to 1.0, inclusive) of the view's corner radius
    /// to its width. For example, a 50% radius would be specified with
    /// `cornerRadiusRatio = 0.5`.
    @IBDesignable public var cornerRadiusRatio: CGFloat {
        get {
            return layer.cornerRadius / frame.width
        }

        set {
            // Make sure that it's between 0.0 and 1.0. If not, restrict it
            // to that range.
            let normalizedRatio = max(0.0, min(1.0, newValue))
            layer.cornerRadius = frame.width * normalizedRatio
        }
    }

}

আমি যাচাই করেছি যে এটি খেলার মাঠে কাজ করে।


4
আপনি কি সীমান্ত ব্যাসার্ধকে গতিময় করতে পারেন তাই এটি সর্বদা প্রস্থের 50% হয় বা এটি একটি স্ট্যাটিক পূর্ণসংখ্যা হওয়া দরকার?
ক্র্যাশলোট

5
আপনি পারেন, তবে কেবল কোডে। একটি আকর্ষণীয় কাজ, যদিও, আপনার দর্শনের শ্রেণিতে একটি আইবিআই স্পেসটেবল সম্পত্তি যুক্ত করা যা 0 এবং 100 এর মধ্যে একটি সংখ্যার মান এবং ব্যাসার্ধের কত শতাংশ হওয়া উচিত তা নির্দেশ করে। উদাহরণস্বরূপ, 50 এর মানটির অর্থ হল যে ব্যাসার্ধের প্রস্থের 50% হওয়া উচিত। এটি একটি গণনিত (সঞ্চিত নয়) সম্পত্তি হওয়ায় আপনি এটি ইউআইভিউয়ের একটি এক্সটেনশনে যুক্ত করতে পারেন যাতে সমস্ত দর্শনের সম্পত্তি থাকতে পারে।
এনআরিত

@ রিত, আমি এরকম কিছু দেখতে আগ্রহী। আপনি কি মনে করেন যে আপনি কোডটি এখানে পোস্ট করতে পারেন?
কোবি ফিশার

17

ভিউ নির্বাচন করুন আপনি কর্নার রেডিজ, সীমানা প্রস্থ এবং সীমানার রঙও স্টোরিবোর্ড ব্যবহার করে পরিবর্তন করেছেন

extension UIView {

    @IBInspectable var cornerRadiusV: CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
            layer.masksToBounds = newValue > 0
        }
    }

    @IBInspectable var borderWidthV: CGFloat {
        get {
            return layer.borderWidth
        }
        set {
            layer.borderWidth = newValue
        }
    }

    @IBInspectable var borderColorV: UIColor? {
        get {
            return UIColor(cgColor: layer.borderColor!)
        }
        set {
            layer.borderColor = newValue?.cgColor
        }
    }
}

4
কর্নার রেডিয়াসের পরিবর্তে কেন কোণার রেডিয়াসভি ব্যবহার করবেন?
লুহইয়া

4
এটি স্টোরিবোর্ডটি ব্যবহার করে কোণার রেডিয়াস সেট করা হয়েছে, প্রজেক্টে লেখার কোডিংটি সংরক্ষণ করুন
আনন্দ আইওয়ালে

পুরোপুরি কাজ করেছেন
হাসান তারেক

0

স্টোরিবোর্ডে সমস্ত পরিবর্তন করার পরেও, ভোরফটের উত্তর আমার পক্ষে কার্যকর নয়।

এটি আমার পক্ষে কাজ করেছে:

layer.cornerRadius = 10
layer.borderWidth = 1
layer.borderColor = UIColor.blue.cgColor

দীর্ঘ উত্তর :

ইউআইভিউ / ইউআইবাটন ইত্যাদি গোলাকার কোণে ers

customUIView.layer.cornerRadius = 10

সীমান্ত বেধ

pcustomUIView.layer.borderWidth = 1

সীমান্ত রঙ

customUIView.layer.borderColor = UIColor.blue.cgColor

এটি প্রশ্নের উত্তর দেওয়ার চেষ্টা করে না এবং এখানে আপনার অন্য উত্তরের একটি সদৃশ ।
shim
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.