2016-11-15 7 views
2

私は、左上と右上から見るために角を付けなければならないという作業やプロジェクトです。私はそれのためにautolayoutを使用しています。私の見解幅はここでは、ここでテーブルビューの最初のセルで私のデザイン選択ビュー左右の丸みのある角が正しくない

  let cell = tableView.dequeueReusableCellWithIdentifier("cell1", forIndexPath: indexPath) 
      let view_ = cell.viewWithTag(10)! as UIView 
let maskLayer : CAShapeLayer = CAShapeLayer() 
      let maskpath = UIBezierPath(roundedRect: view_.bounds, byRoundingCorners: [.TopLeft,.TopRight], cornerRadii: CGSizeMake(10, 10)) 

      maskLayer.frame = view_.bounds; 
      maskLayer.path = maskpath.CGPath; 

      view_.layer.mask = maskLayer 
      cell.selectionStyle = UITableViewCellSelectionStyle.None 
      return cell 

しかし、私の問題の丸みを帯びたコーナーに私のコードにつきとして設計され

first cell

296です私はこの出力を得ていますか?

enter image description here

私はview_.boundsを与えますが、なぜそのビューの元のフレーム値が必要なのかわかりません。 iphone 4sや5のような小型デバイスでは、出力は完全に出力されますが、大きなデバイスではscreeshotのような問題が発生します。

これで私を助けてください

+0

viewdidload()メソッドでテーブルをリロードして問題を解決してください –

+0

tableCellViewのフレームをview.frame.widthというデバイス画面の幅で定義します。0.9 –

+0

@MdIbrahimHassan同じ問題が底面にありますその仕事の左側だけ。右側のコーナーではない。私は客観的なcで働いています –

答えて

0

問題は、あなたがあまりにも早くあなたのコードを実行していることであるUIScreen.main.bounds.width*0.9

1

などのデバイス画面の幅の面でtableCellViewのフレームを定義します。あなたのコードは、我々がview_.boundsを知っているという仮定に依存:

let maskpath = UIBezierPath(roundedRect: view_.bounds, byRoundingCorners: [.TopLeft,.TopRight], cornerRadii: CGSizeMake(10, 10)) 
maskLayer.frame = view_.bounds; 

しかし、あなたのコードが実行される時に、その値は、まだ最終的に決定されていません。ここで覚えておくべきことは、ビューがのサイズがに変更されていることです。 までview_.boundsが最終値(レイアウトとも呼ばれます)を達成した後でコードを延期したいとします。

関連する問題