সুইফট 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)