অ্যাপল কীভাবে UIViewডকটিতে সাবক্লাস করবেন সে সম্পর্কে স্পষ্টভাবে সংজ্ঞায়িত করেছেন ।
নীচের তালিকাটি দেখুন, বিশেষত একবার initWithFrame:এবং একবার দেখুন layoutSubviews। পূর্ববর্তীটি আপনার ফ্রেম সেটআপ করার উদ্দেশ্যে তৈরি হয়েছে UIViewযেখানে পরবর্তীকালের ফ্রেম এবং তার সংক্ষিপ্তসারগুলির বিন্যাস সেটআপ করার উদ্দেশ্যে তৈরি করা হয়েছে।
এছাড়াও মনে রাখবেন যে initWithFrame:আপনি কেবলমাত্র UIViewপ্রোগ্রামটিমেটিকভাবে ইনস্ট্যান্ট করছেন তবেই এটি ডাকা হয় । আপনি যদি এটি কোনও নিব ফাইল (বা স্টোরিবোর্ড) থেকে লোড করছেন তবে initWithCoder:ব্যবহৃত হবে। এবং initWithCoder:ফ্রেমে এখনও গণনা করা হয়নি, সুতরাং আপনি ইন্টারফেস বিল্ডারে সেট আপ করা ফ্রেমটি সংশোধন করতে পারবেন না। হিসাবে প্রস্তাব এই উত্তরে আপনি কলিং মনে হতে পারে initWithFrame:থেকে initWithCoder:অনুক্রমে সেটআপ ফ্রেম।
অবশেষে, আপনি যদি UIViewকোনও নিব (বা স্টোরিবোর্ড) থেকে লোড করেন তবে awakeFromNibকাস্টম ফ্রেম এবং লেআউট প্রারম্ভিককরণগুলি সম্পাদন করার সুযোগও রয়েছে, যেহেতু এটি যখন awakeFromNibনিশ্চিত হয় যে শ্রেণিবদ্ধের প্রতিটি দৃষ্টিভঙ্গি সংরক্ষণাগারভুক্ত এবং আরম্ভ করা হয়েছিল।
এর দস্তাবেজ NSNibAwaking(এখনকার দস্তাবেজ দ্বারা উত্সাহিত awakeFromNib):
জাগ্রত থেকে অন্য বস্তুর বার্তাগুলি নিরাপদে প্রেরণ করা যেতে পারে ফ্রেমনিব - যার মাধ্যমে এটি নিশ্চিত হয়ে গেছে যে সমস্ত বস্তু সংরক্ষণাগারভুক্ত এবং প্রারম্ভিক (যদিও অবশ্যই জাগ্রত নয়)
এটিও লক্ষণীয় যে অটোলেআউট দিয়ে আপনাকে আপনার দৃষ্টির ফ্রেমটি স্পষ্টভাবে সেট করা উচিত নয়। পরিবর্তে আপনি পর্যাপ্ত বাধার একটি সেট নির্দিষ্ট করার কথা, যাতে ফ্রেমটি স্বয়ংক্রিয়ভাবে বিন্যাস ইঞ্জিন দ্বারা গণনা করা হয়।
ডকুমেন্টেশন থেকে সরাসরি :
ওভাররাইড করার পদ্ধতিগুলি
আরম্ভ
initWithFrame:আপনি এই পদ্ধতিটি বাস্তবায়ন করার পরামর্শ দেওয়া হচ্ছে। আপনি এই পদ্ধতিটি ছাড়াও বা পরিবর্তে কাস্টম সূচনা পদ্ধতিও প্রয়োগ করতে পারেন।
initWithCoder: যদি আপনি কোনও ইন্টারফেস বিল্ডার নিব ফাইল থেকে আপনার দৃষ্টিভঙ্গি লোড করেন এবং আপনার দৃশ্যের জন্য কাস্টম সূচনা প্রয়োজন this
layerClassআপনি যদি নিজের দৃষ্টিভঙ্গির ব্যাকিং স্টোরের জন্য আলাদা কোর অ্যানিমেশন স্তর ব্যবহার করতে চান তবেই এই পদ্ধতিটি প্রয়োগ করুন। উদাহরণস্বরূপ, আপনি যদি নিজের অঙ্কনটি করতে ওপেনজিএল ইএস ব্যবহার করে থাকেন তবে আপনি এই পদ্ধতিটি ওভাররাইড করতে এবং CAEAGLLayer ক্লাসটি ফিরিয়ে দিতে চাইবেন।
অঙ্কন এবং মুদ্রণ
drawRect:আপনার দৃষ্টিভঙ্গি কাস্টম সামগ্রী আঁকলে এই পদ্ধতিটি প্রয়োগ করুন। যদি আপনার দৃষ্টিভঙ্গি কোনও কাস্টম অঙ্কন না করে তবে এই পদ্ধতিটিকে ওভাররাইড করা এড়িয়ে চলুন।
drawRect:forViewPrintFormatter: আপনি যদি মুদ্রণের সময় আপনার দর্শনের সামগ্রীটি আলাদাভাবে আঁকতে চান তবে এই পদ্ধতিটি কার্যকর করুন।
সীমাবদ্ধতাসমূহ
requiresConstraintBasedLayout যদি আপনার ভিউ ক্লাসে সঠিকভাবে কাজ করতে বাধার প্রয়োজন হয় তবে এই শ্রেণি পদ্ধতিটি প্রয়োগ করুন।
updateConstraints আপনার দৃশ্যের মধ্যে আপনার সাবউভিউগুলির মধ্যে কাস্টম সীমাবদ্ধতা তৈরি করতে হলে এই পদ্ধতিটি প্রয়োগ করুন lement
alignmentRectForFrame:, frameForAlignmentRect:আপনার দৃষ্টিভঙ্গি কীভাবে অন্যান্য দৃশ্যের সাথে সামঞ্জস্য হয় সেটিকে ওভাররাইড করতে এই পদ্ধতিগুলি প্রয়োগ করুন।
বিন্যাস
sizeThatFits:আপনি যদি নিজের মতামত পুনরায় আকার দেওয়ার ক্রিয়াকলাপের সময় সাধারণত দেখতে চেয়ে আলাদা ডিফল্ট আকার ধারণ করতে চান তবে এই পদ্ধতিটি কার্যকর করুন। উদাহরণস্বরূপ, আপনি নিজের দৃষ্টিভঙ্গিটি এমন বিন্দুতে সঙ্কুচিত হওয়া থেকে রোধ করতে এই পদ্ধতিটি ব্যবহার করতে পারেন যেখানে সাবভিউগুলি সঠিকভাবে প্রদর্শিত হতে পারে না।
layoutSubviews যদি আপনার সাবউভিউগুলির বিন্যাসের উপরে বাধা বা স্বতঃসংশ্লিষ্ট আচরণগুলি সরবরাহ করে তার চেয়ে বেশি সুনির্দিষ্ট নিয়ন্ত্রণের প্রয়োজন হয় তবে এই পদ্ধতিটি কার্যকর করুন।
didAddSubview:, willRemoveSubview:সাবউভিউগুলির সংযোজন এবং অপসারণগুলি ট্র্যাক করার জন্য প্রয়োজনীয় এই পদ্ধতিগুলি প্রয়োগ করুন।
willMoveToSuperview:, didMoveToSuperviewআপনার ভিউ হায়ারার্কিতে বর্তমান দর্শনের গতিপথ ট্র্যাক করার জন্য প্রয়োজনীয় এই পদ্ধতিগুলি প্রয়োগ করুন।
willMoveToWindow:, didMoveToWindowআপনার দৃষ্টিভঙ্গিটিকে অন্য একটি উইন্ডোতে চলাচল করতে ট্র্যাক করার জন্য প্রয়োজনীয় এই পদ্ধতিগুলি প্রয়োগ করুন।
ইভেন্ট হ্যান্ডলিং:
touchesBegan:withEvent:, touchesMoved:withEvent:, touchesEnded:withEvent:, touchesCancelled:withEvent:যদি আপনি সরাসরি স্পর্শ ঘটনা হ্যান্ডেল প্রয়োজন এই পদ্ধতি বাস্তবায়ন। (অঙ্গভঙ্গি-ভিত্তিক ইনপুট জন্য, অঙ্গভঙ্গি সনাক্তকারী ব্যবহার করুন))
gestureRecognizerShouldBegin: যদি আপনার ভিউ টাচ ইভেন্টগুলি সরাসরি পরিচালনা করে এবং সংযুক্ত অঙ্গভঙ্গি শনাক্তকারীদের অতিরিক্ত ক্রিয়াকলাপগুলি থেকে আটকাতে চায় তবে এই পদ্ধতিটি প্রয়োগ করুন।