前提・実現したいこと
プログラミング(swift)を勉強し始めて1週間程度の超初心者です。
progateをさらっとやったくらいで、まだ右も左も分からない状態です...。
RSSフィードを使ったニュースキュレーションアプリを作ろうと試みているところで、以下の物を使用しています。
使っているRSSフィードのサイト:
https://news.finance.yahoo.co.jp/cp/coindesk
使っているタブのライブラリ
https://github.com/Jiar/SegementSlide
発生している問題・エラーメッセージ
RSSフィード利用して取得した記事のタイトルのテキストラベルの表示させていますが、記事のタイトルの先頭部分が見切れてしまっています。セルの高さを高くしたり文字の大きさを変えてみたり、cell.textLabel?.numberOfLinesの数値を変更してもダメでした。
コード
import
1import SegementSlide 2 3class Page10ViewController: UITableViewController,SegementSlideContentScrollViewDelegate,XMLParserDelegate { 4 5 var parser = XMLParser() 6 7 var newsItems = [NewsItems]() 8 9 var currentElementName: String! 10 11 12 13 override func viewDidLoad() { 14 super.viewDidLoad() 15 16 17 tableView.backgroundColor = .clear 18 19 let image = UIImage(named: "9.jpg") 20 let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: self.tableView.frame.size.width, height: self.tableView.frame.size.height)) 21 imageView.image = image 22 self.tableView.backgroundView = imageView 23 24 25 let urlString: String = "https://news.finance.yahoo.co.jp/rss/cp/coindesk.xml" 26 let url: URL = URL(string: urlString)! 27 parser = XMLParser(contentsOf: url)! 28 parser.delegate = self 29 30 31 parser.parse() 32 } 33 34 @objc var scrollView: UIScrollView { 35 return tableView 36 } 37 38 39 override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 40 41 return self.view.frame.size.height/3 42 43 44 } 45 46 47 override func numberOfSections(in tableView: UITableView) -> Int { 48 49 return 1 50 } 51 52 53 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 54 55 return newsItems.count 56 57 58 } 59 60 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 61 62 let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "Cell") 63 cell.backgroundColor = .clear 64 let newsItem = self.newsItems[indexPath.row] 65 cell.textLabel?.text = newsItem.title 66 cell.textLabel?.font = UIFont.boldSystemFont(ofSize: 15.0) 67 cell.textLabel?.textColor = .black 68 cell.textLabel?.numberOfLines = 0 69 cell.textLabel?.frame = CGRect(x: 0, y: 0, width: 0, height: 0) 70 cell.textLabel?.sizeToFit() 71 72 cell.detailTextLabel?.text = newsItem.pubDate 73 cell.detailTextLabel?.textColor = .black 74 75 return cell 76 } 77 78 func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) { 79 80 currentElementName = nil 81 if elementName == "item" { 82 self.newsItems.append(NewsItems()) 83 } else { 84 85 currentElementName = elementName 86 87 } 88 89 } 90 91 func parser(_ parser: XMLParser, foundCharacters string: String) { 92 93 if self.newsItems.count > 0 { 94 95 let lastItem = self.newsItems[self.newsItems.count - 1] 96 97 switch self.currentElementName { 98 99 case "title": 100 lastItem.title = string 101 102 case "link": 103 lastItem.url = string 104 105 case "pubDate": 106 lastItem.pubDate = string 107 print(lastItem.pubDate as Any) 108 default: break 109 110 } 111 112 } 113 114 } 115 116 func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { 117 118 self.currentElementName = nil 119 120 121 } 122 123 func parserDidEndDocument(_ parser: XMLParser) { 124 125 self.tableView.reloadData() 126 127 128 } 129 130 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 131 132 let webViewController: UIViewController = WebViewController() 133 134 webViewController.modalTransitionStyle = .crossDissolve 135 let newsItem = newsItems[indexPath.row] 136 UserDefaults.standard.set(newsItem.url, forKey: "url") 137 138 139 self.present(webViewController, animated: true, completion: nil) 140 141 } 142 143} 144 145 146コード
セルの高さを調整している部分