我的故事板上有一個按鈕。此按鈕位於視圖內,該視圖位於滾動視圖內。如何以編程方式將文本字段添加到滾動視圖
我想要做的事聽起來相對簡單:按下按鈕時,按鈕向下移動一點,然後出現一個textField,此按鈕之前已出現。
但是,會發生什麼是按鈕動畫,但然後返回到其原始位置,而不是保持移動,並且textField顯示爲它應該。
由於出現的textField的位置取決於按鈕的位置,多次按下按鈕只是將一堆文本框放在彼此的頂部。
這裏是發生了什麼圖片:
下面是當按下按鈕,我運行代碼:
@IBAction FUNC addIngredientButtonPressed(發件人:UIButton的){
contentView.bounds.size.height += addIngredientLabel.bounds.height
scrollView.contentSize.height += addIngredientLabel.bounds.height
//Create Text Field and Set Initial Properties
let newIngredientTextField = UITextField(frame: CGRectMake(self.addIngredientLabel.frame.minX as CGFloat, self.addIngredientLabel.frame.midY as CGFloat, self.addIngredientLabel.bounds.width,self.addIngredientLabel.bounds.height * 0.60))
newIngredientTextField.font = UIFont.systemFontOfSize(15.0)
newIngredientTextField.placeholder = "ADD INGREDIENT HERE"
newIngredientTextField.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left
newIngredientTextField.alpha = 0.0
scrollView.addSubview(newIngredientTextField)
UIView.animateWithDuration(0.5) {() -> Void in
self.addIngredientLabel.center.y += self.addIngredientLabel.bounds.height
newIngredientTextField.alpha = 1.0
}
}
注意:**長度也被成功添加到屏幕上,但按鈕不會保持移動狀態。因此,在上面的屏幕截圖中,您確實可以上下滾動**
我注意到,如果您註釋掉頂部兩行代碼,那些將內容視圖和scrollView添加高度的代碼,您會得到幾乎正確的行爲。該按鈕移動並保持移動,textField出現在正確的位置,但如果一直按下,則不會讓您添加比屏幕尺寸更大的textField。
這是一張圖片,說明如果您註釋掉前兩行,會發生什麼情況。該按鈕將不會做任何事情更多,如果你一直按這更多:
我發現很多的教程,告訴你如何添加更多的內容比使用故事板和設置推斷放入一個屏幕指標來釋放形式,但我還沒有發現任何人試圖像我一樣動態添加元素。
恐怕實施你的建議導致了相同的行爲。你假設被稱爲contentView的視圖是scrollView的直接子視圖是正確的。如果你可以看到我的viewController層次結構,你會看到contentView是ScrollView的子元素,而scrollView是主視圖的子元素。解決方案是否可以使約束動畫而不是名爲addIngredientLabel本身的按鈕?我希望我有一個更直觀的方式來確定當幀發生改變時視圖正在做什麼。 – user2807654
另一個嘗試的方法是將contentView的'frame'和'scrollView'的'contentSize'改爲動畫塊。 – hatfinch