সুইফট 3 / সুইফট 4 এর জন্য আপডেট:
আইওএস 8-এর হিসাবে, আপনি তাদের isActive
সম্পত্তিগুলিতে সেট করে আপনার সীমাবদ্ধতাগুলি সক্রিয় করতে এবং করতে পারেন true
। এটি যথাযথ দর্শনে নিজেকে বাধা দিতে সীমাবদ্ধ করে en সীমাবদ্ধতা সম্বলিত একটি অ্যারে পাস করে আপনি একবারে একাধিক সীমাবদ্ধতা সক্রিয় করতে পারেনNSLayoutConstraint.activate()
let label = UILabel(frame: CGRect.zero)
label.text = "Nothing to show"
label.textAlignment = .center
label.backgroundColor = .red
label.translatesAutoresizingMaskIntoConstraints = false
self.tableView.addSubview(label)
let widthConstraint = NSLayoutConstraint(item: label, attribute: .width, relatedBy: .equal,
toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 250)
let heightConstraint = NSLayoutConstraint(item: label, attribute: .height, relatedBy: .equal,
toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 100)
let xConstraint = NSLayoutConstraint(item: label, attribute: .centerX, relatedBy: .equal, toItem: self.tableView, attribute: .centerX, multiplier: 1, constant: 0)
let yConstraint = NSLayoutConstraint(item: label, attribute: .centerY, relatedBy: .equal, toItem: self.tableView, attribute: .centerY, multiplier: 1, constant: 0)
NSLayoutConstraint.activate([widthConstraint, heightConstraint, xConstraint, yConstraint])
আরও ভাল সমাধান:
যেহেতু এই প্রশ্নের প্রাথমিকভাবে উত্তর দেওয়া হয়েছিল, তাই লেআউট অ্যাঙ্করগুলি সীমাবদ্ধতা তৈরি করা আরও সহজ করে প্রবর্তিত হয়েছিল। এই উদাহরণে আমি সীমাবদ্ধতাগুলি তৈরি করি এবং তাৎক্ষণিকভাবে এগুলি সক্রিয় করি:
label.widthAnchor.constraint(equalToConstant: 250).isActive = true
label.heightAnchor.constraint(equalToConstant: 100).isActive = true
label.centerXAnchor.constraint(equalTo: self.tableView.centerXAnchor).isActive = true
label.centerYAnchor.constraint(equalTo: self.tableView.centerYAnchor).isActive = true
বা একই ব্যবহার করে NSLayoutConstraint.activate()
:
NSLayoutConstraint.activate([
label.widthAnchor.constraint(equalToConstant: 250),
label.heightAnchor.constraint(equalToConstant: 100),
label.centerXAnchor.constraint(equalTo: self.tableView.centerXAnchor),
label.centerYAnchor.constraint(equalTo: self.tableView.centerYAnchor)
])
দ্রষ্টব্য: সীমাবদ্ধতা তৈরি এবং সক্রিয় করার আগে সর্বদা আপনার পর্যালোচনাগুলি ভিউ হায়ারার্কিতে যুক্ত করুন ।
আসল উত্তর:
সীমাবদ্ধতাগুলি উল্লেখ করে self.tableView
। যেহেতু আপনি লেবেলটির একটি সংক্ষিপ্তসার হিসাবে যুক্ত করছেন তাই বাধাগুলি self.tableView
"সাধারণ পূর্বপুরুষ" এ যুক্ত করা দরকার:
self.tableView.addConstraint(xConstraint)
self.tableView.addConstraint(yConstraint)
@ মুস্তফা এবং @ কেসিস্ট্রিক্স যেমন মন্তব্যগুলিতে উল্লেখ করেছেন, আপনাকে সেট label.translatesAutoresizingMaskIntoConstraints
করতে হবে false
। আপনি যখন এটি করেন, আপনাকে ফ্রেম আর ব্যবহার করা হয় না বলে বাধাগুলির সাথে লেবেলটির width
এবং তার নির্দিষ্টকরণও প্রয়োজন height
। অবশেষে, আপনার পাঠ্যটি আপনার লেবেলে কেন্দ্রীভূত textAlignment
হয় .Center
যাতে আপনার এটিও সেট করা উচিত ।
var label = UILabel(frame: CGRectZero)
label.text = "Nothing to show"
label.textAlignment = .Center
label.backgroundColor = UIColor.redColor()
label.translatesAutoresizingMaskIntoConstraints = false
self.tableView.addSubview(label)
let widthConstraint = NSLayoutConstraint(item: label, attribute: .Width, relatedBy: .Equal,
toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 250)
label.addConstraint(widthConstraint)
let heightConstraint = NSLayoutConstraint(item: label, attribute: .Height, relatedBy: .Equal,
toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 100)
label.addConstraint(heightConstraint)
let xConstraint = NSLayoutConstraint(item: label, attribute: .CenterX, relatedBy: .Equal, toItem: self.tableView, attribute: .CenterX, multiplier: 1, constant: 0)
let yConstraint = NSLayoutConstraint(item: label, attribute: .CenterY, relatedBy: .Equal, toItem: self.tableView, attribute: .CenterY, multiplier: 1, constant: 0)
self.tableView.addConstraint(xConstraint)
self.tableView.addConstraint(yConstraint)