2017-10-21 83 views
0

我創建了一個的UIView,然後添加錨點限制,但我有一個問題,當我想讀值...讀CGFloat的從Anchor約束

在這種情況下,你看到的,我創建了一個NSLayoutConstraint屬性得到我的uiview的錨寬度...然後我創建了一個包含約束的CGFloat,但是我的NSLog總是返回一個ZERO值。

我在哪裏錯了?我怎樣才能得到我的UIView分配給錨點的寬度值?

UIView *trackLine = [[UIView alloc] init]; 
    trackLine.backgroundColor = [self trackLineColor]; 
    trackLine.translatesAutoresizingMaskIntoConstraints = NO; 
    [self addSubview:trackLine]; 

    [trackLine.topAnchor constraintEqualToAnchor:mediaTitle.bottomAnchor constant:25].active = YES; 
    [trackLine.rightAnchor constraintEqualToAnchor:self.rightAnchor].active = YES; 
    [trackLine.heightAnchor constraintEqualToConstant:1].active = YES; 
    self.width = [trackLine.widthAnchor constraintEqualToAnchor:self.widthAnchor multiplier:.8]; 
    self.width.active = YES; 

    CGFloat trackLineLenght = self.width.constant; 
    NSLog(@"TRACK LINE %f", trackLineLenght); 

的NSLog結果:

**2017-10-21 17:10:35.096562+0200 [5501:1994879] TRACK LINE 0.000000** 
+0

什麼是'self.widthAnchor'在該點的價值? 「自我」可能不具有固有尺寸,其框架尚未設置? – DonMag

+0

@DonMag用幾句話我試圖使用uiview而不是CALayer來學習本教程,但我仍然得到錯誤的值,我不知道爲什麼https://www.raywenderlich.com/36288/how-to-make-一個自定義控件 – kAiN

+0

好吧......所以......就像我在第一個評論中提到的那樣...... *那個點上的'self.widthAnchor'的值是多少?* – DonMag

回答

1

OK - 有點混亂......

首先,不要使用 「寬度」 作爲屬性名稱...很混亂,因爲寬度已經在很多地方使用了。

所以,讓我們假設你有:

@property NSLayoutConstraint *trackLineWidthConstraint; 

一個.widthAnchor實際上並沒有在條款寬度「什麼是錨的寬度。」您要定義約束的方式:

self.trackLineWidthConstraint = [trackLine.widthAnchor constraintEqualToAnchor:self.widthAnchor multiplier:.8]; 

說「設定的self的寬度.trackLineWidthConstraint屬性爲80%所以,每當self變化的實際寬度,你trackLine視圖的實際寬度將改變。 。80%的新的寬度的

.constant爲零如果是其他的東西比零,則該值將被計算 80%之後加入,例如:

self.trackLineWidthConstraint = [trackLine.widthAnchor constraintEqualToAnchor:self.widthAnchor multiplier:.8]; 
// if self is 200-pts wide, trackLine will be 160-pts 

self.trackLineWidthConstraint.constant = 10 
// trackLine width is now (200 * 0.8) + 10, or 170-pts 

如果您想獲得trackLine的當前寬度,您可以從.frame(在自動佈局完成後)獲取它。

希望,這不只是使它更加混亂:)

+0

好,但我怎麼能得到自動佈局後的框架?爲什麼當我打電話view.frame.size.width永遠不會給我一個價值......我在我稱之爲框架的位置錯了嗎? – kAiN

+0

另外我想問問爲什麼在你沒有添加的財產(非原子,強)??? – kAiN

+0

如果我們可以去2分鐘聊天我會看到我的代碼,以瞭解爲什麼我的滑塊不回答...我要離開我的腦海 – kAiN