代碼手動(dòng)修改約束(AutoLayout)

當(dāng)使用xib或storyBoard構(gòu)建項(xiàng)目,并使用了AutoLayout之后,當(dāng)需要為視圖添加動(dòng)畫,或者手動(dòng)更改視圖的frame的時(shí)候,就需要修改約束啦.別以為代碼中修改約束很麻煩,其實(shí)還蠻簡(jiǎn)單的啦.

例如: 跟隨鍵盤彈出的ToolBar,原來在視圖底部,當(dāng)鍵盤彈出時(shí),ToolBar跟隨鍵盤彈出
<li>首先將ToolBar到底部的約束添加一個(gè)IBOutlet</li>
<pre><code>
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *toolViewBottomConstraint;
</code></pre>
<li>鍵盤彈出修改約束</li>

<pre><code>
//鍵盤的通知(顯示)

  • (void)keyboardWillShow:(NSNotification )notification
    {
    NSValue
    aValue = [[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey];
    CGRect keyboardRect = [aValue CGRectValue];
    NSNumber *durationValue = [notification userInfo][UIKeyboardAnimationDurationUserInfoKey];
    NSTimeInterval animationDuration = durationValue.doubleValue;

    [UIView animateWithDuration:animationDuration delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
    _toolViewBottomConstraint.constant = keyboardRect.size.height;//修改距離底部的約束
    } completion:^(BOOL finished) {
    }];
    [self.view setNeedsLayout]; //更新視圖
    [self.view layoutIfNeeded];
    }
    </code></pre>
    下面來看下,如何刪除和增加約束
    最后,附個(gè)addConstraint 函數(shù)的意義:
    view1.attr1 = view2.attr2 * multiplier + constant

<pre><code>
[self.view removeConstraint:_sinaLeftDistance];//在父試圖上將iSinaButton距離屏幕左邊的約束刪除

NSLayoutConstraint *myConstraint =[NSLayoutConstraint
constraintWithItem:iSinaButton //子試圖
attribute:NSLayoutAttributeCenterX //子試圖的約束屬性
relatedBy:NSLayoutRelationEqual //屬性間的關(guān)系
toItem:self.view//相對(duì)于父試圖
attribute:NSLayoutAttributeCenterX//父試圖的約束屬性
multiplier:1.0
constant:0.0];// 固定距離

[self.view addConstraint: myConstraint];//為iSinaButton重新添加一個(gè)約束
</code></pre>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,022評(píng)論 4 61
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,716評(píng)論 25 709
  • 周日,小子學(xué)校組織社會(huì)實(shí)踐,我剛好有時(shí)間去聽節(jié)心理課。 趕到聽課地址,好多家長(zhǎng)都已經(jīng)在那里等著,看來大家對(duì)育...
    瞬間轉(zhuǎn)變閱讀 205評(píng)論 4 0
  • 我是大白,一只愛發(fā)呆的呆大白。 為什么用這個(gè)名字? Just like it!
    呆大白閱讀 284評(píng)論 0 0
  • 今天在小區(qū)里溜達(dá)一圈,兩座小橋和大門處,不知何時(shí)掛起了紅紅的燈籠。整日蝸居在家仿佛與世隔絕的我突然間嗅到了濃濃的年...
    二姐隨行閱讀 388評(píng)論 0 0

友情鏈接更多精彩內(nèi)容