আমি মনোনীত এবং প্রয়োজনীয় জন্য একটি সাধারণ init তৈরি করি। সুবিধার জন্য আমি init(frame:)
শূন্যের ফ্রেমটি দিয়েছি ।
শূন্য ফ্রেম থাকা কোনও সমস্যা নয় কারণ সাধারণত দর্শনটি একটি ভিউকন্ট্রোলারের দর্শনের অভ্যন্তরে থাকে; আপনার কাস্টম ভিউটি যখন তার তত্ত্বাবধানে কল আসে layoutSubviews()
বা এটির পর্যবেক্ষণগুলি বিন্যাস করার জন্য একটি ভাল, নিরাপদ সুযোগ পাবে updateConstraints()
। এই দুটি ক্রিয়াকলাপটি ভিউ হায়ারার্কি জুড়ে সিস্টেমকে পুনরাবৃত্তভাবে ডেকে আনে। আপনি হয় updateContstraints()
বা ব্যবহার করতে পারেন layoutSubviews()
। updateContstraints()
প্রথমে বলা হয়, তারপর layoutSubviews()
। ইন updateConstraints()
নিশ্চিত করুন সুপার কল গত । ইন layoutSubviews()
, প্রথমে সুপার কল করুন ।
আমি যা করি তা এখানে:
@IBDesignable
class MyView: UIView {
convenience init(args: Whatever) {
self.init(frame: CGRect.zero)
//assign custom vars
}
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
commonInit()
}
private func commonInit() {
//custom initialization
}
override func updateConstraints() {
//set subview constraints here
super.updateConstraints()
}
override func layoutSubviews() {
super.layoutSubviews()
//manually set subview frames here
}
}
var
। তবে সুইফ্টের ডিফল্ট সেরা অনুশীলনটি ভেরিয়েবলগুলি ঘোষণারlet
কারণ না থাকলে তা ঘোষণা করাvar
। উপরের আমার কোড উদাহরণে তেমন কোনও কারণ নেইlet
।