我在試驗如何使用UIScrollView。經過很多麻煩,我終於得到了它的竅門。但現在我似乎又遇到了另一個障礙。以編程方式設置約束
在這個簡單的應用程序,我有一個滾動視圖,爲了它的工作,我必須設置視圖的底部空間滾動視圖約束爲0描述here,它工作正常。我正在通過IB來完成。
現在我遇到了一個場景,我必須以編程方式執行該部分。我在viewDidLoad
方法中添加了下面的代碼。
NSLayoutConstraint *bottomSpaceConstraint = [NSLayoutConstraint constraintWithItem:self.view
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.scrollView
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant:0.0];
[self.view addConstraint:bottomSpaceConstraint];
但它似乎沒有工作。它會在控制檯窗口中輸出以下消息,我不知道該如何處理它。
無法同時滿足約束條件。 以下列表中的至少一個約束可能是您不想要的。試試這個:(1)看看每個約束,並試圖找出你不期望的; (2)找到添加不需要的約束或約束並修復它的代碼。 (注意:如果你看到,你不明白NSAutoresizingMaskLayoutConstraints,請參閱文檔UIView的財產translatesAutoresizingMaskIntoConstraints) ( 「」, 「」 )
有人能告訴我該怎麼辦這個?我還附加了一個演示項目here,以便您可以更好地瞭解這個問題。
UPDATE:
首先感謝您的答覆。使用答案中提到的方法,我能夠得到它的工作。然而,略微不同的情況下,它不是。現在我試圖以編程方式將視圖加載到viewcontroller。
如果我可以進一步解釋。有2個視圖控制器。第一個是UITableViewController
,第二個是UIViewController
。裏面有一個UIScrollView
。還有多個UIView
s,其中一些視圖的高度超過了屏幕的正常高度。
UITableViewController
顯示選項列表。根據用戶的選擇,批次中的特定UIView
將與UIScrollView
一起加載到UIViewController
中。
在這種情況下,上述方法不起作用。滾動沒有發生。因爲我分別加載視圖,所以我必須做些不同的事情嗎?
我已經上傳了一個演示項目here,以便您可以看到它的實際應用。請參閱Email.xib
並從表格視圖列表中選擇電子郵件。
喜羅布,感謝您的支持ponse。我更新了現有的約束,它工作正常。然而,現在我試圖從一個單獨的'UIView'加載視圖,然後它不工作。在這種情況下,我必須做些不同的事情嗎?我更新了我的問題。 – Isuru 2013-04-09 06:35:02
@Isuru我已經完成了你的項目,並有很多評論,所以看到我修改後的答案。另外,如果您下載我的示例項目,這些項目是原始代碼庫的簡化版本,您將在源代碼中看到額外的評論。 – Rob 2013-04-09 17:56:16
嗨,羅布,非常感謝你的這一切。這絕對是我獲得問題的最佳答案之一。我經歷了這兩個項目並學到了很多東西。我進入iOS開發4個月,所以我對一些東西很陌生,但都很好。我想使用xib文件的原因是我正在使用這個應用程序工作,老年人堅持使用一個'UIViewController'並擁有郵件類型用戶界面和_templates_ nib文件,因爲它更易於管理,因爲我們已經有了很多場景躺在身邊。 – Isuru 2013-04-10 06:08:56