tableViewCellがcellForRowAtIndexPathでセットされたときに、cell内のviewをアニメーションさせようと思っています。
しかし、viewの幅を徐々に大きくさせるはずが、カクッと急激に大きくなってしまい、うまくアニメーションさせられません。(cellと内部のviewは表示されます)
ひょっとするとautolayoutが原因かもしれませんが調べてもよく分かりませんでした
ネットで調べていたところcell内でアニメーションさせるもので下記の記事を見つけ、参考にしました。
http://hachinobu.hateblo.jp/entry/2015/03/17/004247
cellが表示されると同時にcell内のviewをスムーズにアニメーションさせたいのですが、どなたかご教授いただけないでしょうか
環境:xcode 7.2.1
実装内容
swift
1func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath:NSIndexPath) -> UITableViewCell { 2 3 cellIdentifier = "cellId" 4 let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) 5 if let cell = cell as? DetailCell { 6 let delay = 0.3 * Double(NSEC_PER_SEC) 7 let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 8 dispatch_after(time, dispatch_get_main_queue(), { 9 cell.targetView.layoutIfNeeded() 10 //AutoLayOutのwidthの長さが200になるようにアニメーションさせる(初期値は0) 11 12 cell.targetViewWidthConstraint.constant = 200 13 UIView.animateWithDuration( 14 5.0, 15 delay:0.1, 16 options:UIViewAnimationOptions.CurveEaseOut, 17 animations: {() -> Void in 18 cell.targetView.layoutIfNeeded 19 }, 20 completion: nil 21 ) 22 }) 23 } 24 return cell 25}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。