第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

我可以更改NSLayoutConstraint的multiplier屬性嗎?

我可以更改NSLayoutConstraint的multiplier屬性嗎?

蕪湖不蕪 2019-10-28 15:34:28
我在一個(gè)超級(jí)視圖中創(chuàng)建了兩個(gè)視圖,然后在視圖之間添加了約束:_indicatorConstrainWidth = [NSLayoutConstraint constraintWithItem:self.view1 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.view2 attribute:NSLayoutAttributeWidth multiplier:1.0f constant:0.0f];[_indicatorConstrainWidth setPriority:UILayoutPriorityDefaultLow];_indicatorConstrainHeight = [NSLayoutConstraint constraintWithItem:self.view1 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.view2 attribute:NSLayoutAttributeHeight multiplier:1.0f constant:0.0f];[_indicatorConstrainHeight setPriority:UILayoutPriorityDefaultLow];[self addConstraint:_indicatorConstrainWidth];[self addConstraint:_indicatorConstrainHeight];現(xiàn)在,我想用動(dòng)畫更改乘子屬性,但是我不知道如何更改乘子屬性。(我在頭文件NSLayoutConstraint.h的私有屬性中找到了_coefficient,但它是私有的。)如何更改多重屬性?我的解決方法是刪除舊的約束,并為添加新的約束multipler。
查看完整描述

3 回答

?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊

這是Swift中的NSLayoutConstraint擴(kuò)展,可以輕松設(shè)置新的乘數(shù):


import UIKit


extension NSLayoutConstraint {


    func setMultiplier(multiplier:CGFloat) -> NSLayoutConstraint {


        NSLayoutConstraint.deactivateConstraints([self])


        let newConstraint = NSLayoutConstraint(

            item: firstItem,

            attribute: firstAttribute,

            relatedBy: relation,

            toItem: secondItem,

            attribute: secondAttribute,

            multiplier: multiplier,

            constant: constant)


        newConstraint.priority = priority

        newConstraint.shouldBeArchived = shouldBeArchived

        newConstraint.identifier = identifier


        NSLayoutConstraint.activateConstraints([newConstraint])

        return newConstraint

    }

}

在Swift 3.0中


import UIKit

extension NSLayoutConstraint {

    /**

     Change multiplier constraint


     - parameter multiplier: CGFloat

     - returns: NSLayoutConstraint

    */

    func setMultiplier(multiplier:CGFloat) -> NSLayoutConstraint {


        NSLayoutConstraint.deactivate([self])


        let newConstraint = NSLayoutConstraint(

            item: firstItem,

            attribute: firstAttribute,

            relatedBy: relation,

            toItem: secondItem,

            attribute: secondAttribute,

            multiplier: multiplier,

            constant: constant)


        newConstraint.priority = priority

        newConstraint.shouldBeArchived = self.shouldBeArchived

        newConstraint.identifier = self.identifier


        NSLayoutConstraint.activate([newConstraint])

        return newConstraint

    }

}

演示用法:


@IBOutlet weak var myDemoConstraint:NSLayoutConstraint!


override func viewDidLoad() {

    let newMultiplier:CGFloat = 0.80

    myDemoConstraint = myDemoConstraint.setMultiplier(newMultiplier)


    //If later in view lifecycle, you may need to call view.layoutIfNeeded() 

}


查看完整回答
反對(duì) 回復(fù) 2019-10-28
?
大話西游666

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊

我用來更改現(xiàn)有布局約束的乘數(shù)的輔助函數(shù)。它創(chuàng)建并激活了一個(gè)新的約束,并停用了舊的約束。


struct MyConstraint {

  static func changeMultiplier(_ constraint: NSLayoutConstraint, multiplier: CGFloat) -> NSLayoutConstraint {

    let newConstraint = NSLayoutConstraint(

      item: constraint.firstItem,

      attribute: constraint.firstAttribute,

      relatedBy: constraint.relation,

      toItem: constraint.secondItem,

      attribute: constraint.secondAttribute,

      multiplier: multiplier,

      constant: constraint.constant)


    newConstraint.priority = constraint.priority


    NSLayoutConstraint.deactivate([constraint])

    NSLayoutConstraint.activate([newConstraint])


    return newConstraint

  }

}

用法,將乘數(shù)更改為1.2:


constraint = MyConstraint.changeMultiplier(constraint, multiplier: 1.2)


查看完整回答
反對(duì) 回復(fù) 2019-10-28
  • 3 回答
  • 0 關(guān)注
  • 1371 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)