代码之家  ›  专栏  ›  技术社区  ›  xhxh96

页控件中的多个uilabel

  •  0
  • xhxh96  · 技术社区  · 7 年前

    我正在尝试对多个uilabel执行scrollview+pagecontrol,即每个视图应该有两个uilabel,一个用于标题,一个用于描述。

    我很熟悉在scrollview+pagecontrol中添加一个uilabel。问题是如何在scrollview的子视图中添加多个uilabel?我有以下代码,对于一个uilabel可以正常工作:

    @IBOutlet weak var bloggerReviewScrollView: UIScrollView!
    @IBOutlet weak var bloggerReviewPageControl: UIPageControl!
    var frame = CGRect(x: 0, y: 0, width: 0, height: 0)
    var reviews: [Reviews] = [Reviews(name: "NameA", description: "DescriptionA", date: Date.init(), url: nil), Reviews(name: "NameB", description: "DescriptionB", date: Date.init(), url: nil)]
    
    func updateReview() {
        reviewPageControl.numberOfPages = reviews.count
        for index in 0..<reviews.count {
            frame.origin.x = reviewScrollView.frame.size.width * CGFloat(index)
            frame.size = reviewScrollView.frame.size
    
            let reviewContent = UILabel(frame: frame)
            reviewContent.text = reviews[index].description
            reviewContent.numberOfLines = 0
            reviewScrollView.addSubview(reviewContent)
        }
        reviewScrollView.contentSize = CGSize(width: reviewScrollView.frame.size.width * CGFloat(reviews.count), height: reviewScrollView.frame.size.height)
        reviewScrollView.delegate = self
    }
    

    但是,除了 reviews[index].description ,我还想显示 reviews[index].name 以使该标签的样式独立于视图中描述标签的样式。有什么办法让我这么做吗?

    谢谢大家!

    1 回复  |  直到 7 年前
        1
  •  1
  •   Iraniya Naynesh    7 年前

    你需要的是决定你想在哪里和如何显示你的两个标签,也就是说标签框架,我已经分成两部分,你可以根据你的需求改变框架,创建新的标签实例并将其添加到你的reviewscrollview

    func updateReview() {
      reviewPageControl.numberOfPages = reviews.count
      for index in 0..<reviews.count {
        frame.origin.x = reviewScrollView.frame.size.width * CGFloat(index)
        frame.size = reviewScrollView.frame.size
    
        //title lable
        ////set title frame based on your requirment
         let reviewLabelFrame = CGRect(x: frame.origin.x, y: 0, width: frame.width, height: frame.height/2)
        let titleLabel = UILabel(frame: reviewLabelFrame)
        titleLabel.text = reviews[index]. name // get name and set the title  
        titleLabel.numberOfLines = 0
        reviewScrollView.addSubview(titleLabel)
    
        //descriptions Label
    
        //set descriptions frame based on your requirment
        let desLableFram = CGRect(x: frame.origin.x, y: frame.height/2, width: frame.width, height: frame.height/2)
        let desLable = UILabel(frame: desLableFram)
        desLable.text = reviews[index].description //get description and set 
        desLable.numberOfLines = 0
        reviewScrollView.addSubview(desLable) //add your descriptions
    }
    

    您需要根据您的要求计算两个标签的框架