ios - প্রোগ্রামিয়ালি লেআউট সীমাবদ্ধতা কীভাবে তৈরি করবেন




iphone constraints (4)

আপনি নীচের মতো অটোলেআউট সীমাবদ্ধতা প্রোগ্রামের মতো ব্যবহার করতে পারেন

fileprivate func setupName(){
        let height = CGFloat(50)

        lblName.text = "Hello world"
        lblName.backgroundColor = .lightGray

        //Step 1
        lblName.translatesAutoresizingMaskIntoConstraints = false

        //Step 2
        self.view.addSubview(lblName)

        //Step 3
        NSLayoutConstraint.activate([

            lblName.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor),
            lblName.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor),
            lblName.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor,constant: -height),
            lblName.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor),
            ])

    }

আউটপুট স্ক্রিনশট

আমি সর্বজনীন অ্যাপ্লিকেশনটির নীচে একটি দৃশ্য প্রদর্শন করছি এবং আমার দৃষ্টিতে এই দৃশ্যটি গতিশীলভাবে যুক্ত করছি। আমি এই ভিউটি প্রতিবার আইএডের মতো নীচে দেখাতে চাই। উভয় অভিযোজন। আমি এর জন্য কীভাবে বাধা যুক্ত করতে পারি। সুপারিশ করুন.

ধন্যবাদ


এছাড়াও আইওএস 9 এর পরে এটি অ্যাঙ্করগুলির সাথে খুব সাধারণভাবে করা যেতে পারে:

সুইফট 3

extension UIView {

    func addConstaintsToSuperview(leadingOffset: CGFloat, topOffset: CGFloat) {

        guard superview != nil else {
            return
        }

        translatesAutoresizingMaskIntoConstraints = false

        leadingAnchor.constraint(equalTo: superview!.leadingAnchor,
                                 constant: leadingOffset).isActive = true

        topAnchor.constraint(equalTo: superview!.topAnchor,
                             constant: topOffset).isActive = true
    }

    func addConstaints(height: CGFloat, width: CGFloat) {

        heightAnchor.constraint(equalToConstant: height).isActive = true
        widthAnchor.constraint(equalToConstant: width).isActive = true
    }

}

ওবিজেসি বিভাগে

@implementation UIView (Constraints)

-(void)addConstaintsToSuperviewWithLeadingOffset:(CGFloat)leadingOffset topOffset:(CGFloat)topOffset
{
    if (self.superview == nil) {
        return;
    }

    self.translatesAutoresizingMaskIntoConstraints = false;

    [[self.leadingAnchor constraintEqualToAnchor:self.superview.leadingAnchor
                                        constant:leadingOffset] setActive:true];

    [[self.topAnchor constraintEqualToAnchor:self.superview.topAnchor
                                   constant:topOffset] setActive:true];
}

-(void)addConstaintsWithHeight:(CGFloat)height width:(CGFloat)width
{
    [[self.heightAnchor constraintEqualToConstant:height] setActive:true];
    [[self.widthAnchor constraintEqualToConstant:width] setActive:true];
}

@end

সুইফট 4 এ @ অ্যালেক্স শুবিন সমাধানটি প্রসারিত করা, আমি নিম্নলিখিতগুলি করছি:

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

keyboard.addConstaints(top: nil, right: 0.0, bottom: 0.0, left: 0.0, width: nil, height: nil)

আপনার প্রয়োজনীয় সমস্ত সংযোজন যুক্ত হওয়া এবং আপনার কোনও বিরোধী বাধা নেই তা নিশ্চিত করতে হবে।

extension UIView {
    func addConstaints(top: CGFloat?, right: CGFloat?, bottom: CGFloat?, left: CGFloat?, width: CGFloat?, height: CGFloat?) {
        translatesAutoresizingMaskIntoConstraints = false
        if top != nil { self.addConstaint(top: top!) }
        if right != nil { self.addConstaint(right: right!) }
        // Add lines for bottom, left, width an heigh
        // ...
    }
    func addConstaint(top offset: CGFloat) {
        guard superview != nil else { return }
        topAnchor.constraint(equalTo: superview!.topAnchor, constant: offset).isActive = true
    }
}

সমস্ত দর্শন সঠিকভাবে নির্ধারণ করা হয়েছে তা যাচাই করার জন্য, আপনি সুপারভিউ। নিয়ন্ত্রণের সম্পত্তিটি পরীক্ষা করতে পারেন বা ফ্রেমটি এখানে পরীক্ষা করতে পারেন:

override func viewDidLayoutSubviews() {
    print(keyboard.frame)
}

স্ক্রিনের নীচে একটি দৃশ্যের স্থির করতে আপনাকে সেট করতে নিম্নলিখিত সীমাবদ্ধতার প্রয়োজন।

  1. X- এর জন্য পিতামাতার দৃশ্যের প্রতি শ্রদ্ধাশীল নেতৃস্থানীয় প্রতিবন্ধকতা
  2. প্রস্থের জন্য প্রস্থের প্রতি শ্রদ্ধার সাথে সীমাবদ্ধতা - প্রস্থ
  3. এর জন্য পিতামাতার দৃশ্যের সম্মানের সাথে নীচের সীমাবদ্ধতা Y
  4. উচ্চতার জন্য স্ব-সংযুক্তি উচ্চতা Const

যোগ করতে দেয়।

UIView *subView=bottomView;
UIView *parent=self.view;

subView.translatesAutoresizingMaskIntoConstraints = NO;

//Trailing    
NSLayoutConstraint *trailing =[NSLayoutConstraint
                                constraintWithItem:subView
                                attribute:NSLayoutAttributeTrailing
                                relatedBy:NSLayoutRelationEqual
                                toItem:parent   
                                attribute:NSLayoutAttributeTrailing
                                multiplier:1.0f
                                constant:0.f];

//Leading

NSLayoutConstraint *leading = [NSLayoutConstraint
                                   constraintWithItem:subView
                                   attribute:NSLayoutAttributeLeading
                                   relatedBy:NSLayoutRelationEqual
                                   toItem:parent
                                   attribute:NSLayoutAttributeLeading
                                   multiplier:1.0f
                                   constant:0.f];

//Bottom
NSLayoutConstraint *bottom =[NSLayoutConstraint
                                 constraintWithItem:subView
                                 attribute:NSLayoutAttributeBottom
                                 relatedBy:NSLayoutRelationEqual
                                 toItem:parent
                                 attribute:NSLayoutAttributeBottom
                                 multiplier:1.0f
                                 constant:0.f];

//Height to be fixed for SubView same as AdHeight
NSLayoutConstraint *height = [NSLayoutConstraint
                               constraintWithItem:subView
                               attribute:NSLayoutAttributeHeight
                               relatedBy:NSLayoutRelationEqual
                               toItem:nil
                               attribute:NSLayoutAttributeNotAnAttribute
                               multiplier:0
                               constant:ADHeight];

    //Add constraints to the Parent
    [parent addConstraint:trailing];
    [parent addConstraint:bottom];
    [parent addConstraint:leading];

    //Add height constraint to the subview, as subview owns it.
    [subView addConstraint:height];

আশাকরি এটা সাহায্য করবে.

চিয়ার্স।








constraints