2017-07-10 9 views
1

私は素早くIOSプログラミングを学びました。私はラベルを丸くする必要があります。私はSOのコードを検索し、答えが受け入れられ、10以上upvoted私のアプリにスクラッチします。しかし、私の場合はコードが動作していません。スワイプxcodeで丸いラベルが動作しない

CODE

func changeToRoundLable(countLabel : UILabel){ 
    let size:CGFloat = 55.0 
    countLabel.textColor = UIColor.white 
    countLabel.textAlignment = .center 
    countLabel.font = UIFont.systemFont(ofSize: 14.0) 
    countLabel.bounds = CGRect(x : 0.0,y : 0.0,width : size, height : size) 
    countLabel.layer.cornerRadius = size/2 
    countLabel.layer.borderWidth = 3.0 
    countLabel.layer.masksToBounds = true 
    countLabel.layer.backgroundColor = UIColor.orange.cgColor 
    countLabel.layer.borderColor = UIColor.orange.cgColor 
    countLabel.translatesAutoresizingMaskIntoConstraints = false 
} 

私はコンストラクタ次のUITableViewCell class.inでそれを実装しました。

override init(style: UITableViewCellStyle, reuseIdentifier: String!) 
{ 
    super.init(style: style, reuseIdentifier: reuseIdentifier) 
    changeToRoundLable(countLabel: txtDays) 
} 

私はどこでミスをしたのか分かりません。親切に私を助けてください。

XCodeのバージョン:8.3.3(8E3004b) スウィフトバージョン:アップルスウィフトバージョン3.1

UPDATE、次のようにセルを作成

import UIKit 

class ProductListItemCell: UITableViewCell { 

@IBOutlet weak var txtOfferPercentage: UILabel! 



@IBOutlet weak var txtDays: UILabel! 


@IBAction func btnViewDeal(_ sender: UIButton) { 

} 

override init(style: UITableViewCellStyle, reuseIdentifier: String!) { 
    super.init(style: style, reuseIdentifier: reuseIdentifier) 
    changeToRoundLable(countLabel: txtDays) 

    offerPercentageImage() 
} 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 

} 
func offerPercentageImage(){ 
    let point = CGPoint(x:10,y:10); 
    let size = CGSize(width:txtOfferPercentage.frame.size.width - 20,height:20) 
    let labelLeft = SMIconLabel(frame: CGRect(origin:point,size: size)) 
    labelLeft.text = "Icon on the left, text on the left" 

    // Here is the magic 
    labelLeft.icon = UIImage(named: "percentage") // Set icon image 
    labelLeft.iconPadding = 5    // Set padding between icon and label 
    labelLeft.numberOfLines = 0 // Icon position 
    labelLeft.iconPosition.horizontal = SMIconHorizontalPosition.right 
    txtOfferPercentage.addSubview(labelLeft) 
} 



func changeToRoundLable(countLabel : UILabel){ 


    let size:CGFloat = 55.0 
    countLabel.textColor = UIColor.white 
    countLabel.textAlignment = .center 
    countLabel.font = UIFont.systemFont(ofSize: 14.0) 
    countLabel.bounds = CGRect(x : 0.0,y : 0.0,width : size, height : size) 
    countLabel.layer.cornerRadius = size/2 
    countLabel.layer.borderWidth = 3.0 
    countLabel.layer.masksToBounds = true 
    countLabel.layer.backgroundColor = UIColor.orange.cgColor 
    countLabel.layer.borderColor = UIColor.orange.cgColor 
    countLabel.translatesAutoresizingMaskIntoConstraints = false 
} 
override func awakeFromNib() { 
    super.awakeFromNib() 

} 

} 

class ProductListPageController: 
    UIViewController,UITableViewDataSource,UITableViewDelegate { 



    @IBOutlet weak var tblProductList: UITableView! 
    override func viewDidLoad() { 
    super.viewDidLoad() 
//   tabname.text = tabText! 
     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 10 
} 
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = self.tblProductList.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ProductListItemCell 
    cell.imgProduct.image = UIImage(named: "burger") 

    return cell 
    } 

} 
+2

'override init(スタイル:UITableViewCellStyle、reuseIdentifier:String!)'が呼び出されていますか?どのように 'UITableViewCell'を(あなたの' UITableView'に対して)作成しましたか?ストーリーボード?コード? – Larme

+0

私は自分のコードを掲載しました。親切にチェックしてください。 – Noorul

+0

また、ラベルの右側にイメージを配置したいと考えています。イメージはimages.xcassetsに追加されています。それも動作していない – Noorul

答えて

0

あなたをこのようにカスタムセルを作成すると、override init(style: UITableViewCellStyle, reuseIdentifier: String!)ではなく、required init?(coder aDecoder: NSCoder) {が呼び出されます。

ラベル設定コードを必要なinitメソッドに移動するか、cellForRowメソッドで移動できます。

+0

thats fine。返信ありがとう。コードはラウンドを行うものではありません。それは楕円形のテキストビューを作成します。後もう一つ。制約レイアウトとサイズクラスのための最も簡単で簡単なチュートリアルがあります。私は応答性のモバイルアプリケーションが必要です。親切にリンクを共有してください。 – Noorul

+0

@ Noorulこのリンクをチェックして、プログラムで制約を追加するhttps://stackoverflow.com/a/36263784/5838902 –

関連する問題