Несколько UILabel в Page Control - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь выполнить scrollView + pageControl для нескольких UILabel, т. Е. В каждом представлении должно быть 2 UILabel - один для заголовка и один для описаний.

Я знаком с добавлением одной UILabel в scrollView + pageControl. Вопрос в том, как добавить более одной UILabel в подпредставление scrollView? У меня есть следующий код, который отлично работает для одного 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 Ответ

0 голосов
/ 29 июня 2018

Вам нужно решить, где и как вы хотите отображать обе ваши метки, то есть рамки меток. Я разделил на две части: вы можете изменить рамку в соответствии с вашими требованиями, создать новый экземпляр Label и добавить его в свой 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
}

вам нужно рассчитать кадры для обоих ярлыков на основе ваших требований

...