- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试将此标签 View 添加到我的具有单元格和标题的集合 Controller 中。但是,在我运行它之后没有添加任何东西。我本可以使用 Storyboard创建这些标签,但我想知道如何在没有 Storyboard的情况下做到这一点。请帮忙,非常感谢!
var dayLabelContainerView : UIView {
let v = UIView()
let formatter : NSDateFormatter = NSDateFormatter()
for index in 1...7 {
let day = formatter.weekdaySymbols[index % 7] as NSString
let weekdayLabel = UILabel()
weekdayLabel.text = day.substringToIndex(2).uppercaseString
weekdayLabel.textColor = UIColor.grayColor()
weekdayLabel.textAlignment = NSTextAlignment.Center
v.addSubview(weekdayLabel)
}
self.addSubview(v)
return v
}
更新: Collection View 代码:
//
// DaysViewController.swift
// Calendar
//
// Created by guiyang Fan on 12/29/16.
// Copyright © 2016 guiyang Fan. All rights reserved.
//
import UIKit
private let reuseIdentifier = "Cell"
private let headerHeight: CGFloat = 100
class DaysViewController: UICollectionViewController {
private let weekdaySymbols = DateFormatter().shortWeekdaySymbols
private let dateFormatter = DateFormatter()
private let calendar = NSCalendar.current
private var currentDate: Date = Date()
private let specificDate = NSDateComponents()
fileprivate let sectionInsets = UIEdgeInsets(top: 50.0, left: 0, bottom : 50.0, right: 20.0)
var monthInfo : [Int:[Int]] = [Int:[Int]]()
private var weekdayOffset: Int {
get{
var components = calendar.dateComponents([.year, .month, .day], from: currentDate)
components.day = 1
components.month = 2
let startOfMonth = calendar.date(from: components)
return self.calendar.component(.weekday, from: startOfMonth!)
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Register cell classes
// Do any additional setup after loading the view.
collectionView?.backgroundColor = UIColor.white
//collectionView?.register(headerView.self, forCellWithReuseIdentifier:"headerId" )
//collectionView?.register(<#T##nib: UINib?##UINib?#>, forSupplementaryViewOfKind: <#T##String#>, withReuseIdentifier: <#T##String#>)
// setupMenuBar()
}
var dayLabel : UIView {
let v = UIView()
let formatter: DateFormatter = DateFormatter()
for index in 1...7 {
let day = formatter.shortWeekdaySymbols[index] as NSString
let weekdayLabel = UILabel()
weekdayLabel.text = day as String
weekdayLabel.textAlignment = NSTextAlignment.center
v.addSubview(weekdayLabel)
}
view.addSubview(v)
return v
}
/*
let menu: MenuBar = {
let mb = MenuBar()
return mb
}()
private func setupMenuBar(){
view.addSubview(menu)
let views = ["menu" : menu]
let horizontalConstraints = NSLayoutConstraint.constraints(withVisualFormat: "H:|-20-[menu]|",options: [], metrics: nil, views: views)
let verticalConstraints = NSLayoutConstraint.constraints(withVisualFormat: "V:|-20-[menu(50)]",options: [], metrics: nil, views: views)
view.addConstraints(horizontalConstraints)
view.addConstraints(verticalConstraints)
}
*/
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
// MARK: UICollectionViewDataSource
override func numberOfSections(in collectionView: UICollectionView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of items
//let range = calendar.range(of: .day, in: .month, for:currentDate)!
//return range.count
return 42
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! DaysViewCell
// Configure the cell
//let currentMonthInfo : [Int] = monthInfo[indexPath.section]!
/*
let fdIndex = currentMonthInfo[FIRST_DAY_INDEX]
let nDays = currentMonthInfo[NUMBER_DAYS_INDEX]
let fromStartOfMonthIndexPath = NSIndexPath(forItem: IndexPath.item - fdIndex, inSection: indexPath.section)
if indexPath.item
*/
var components = calendar.dateComponents([.day, .month, .year], from: currentDate)
components.month = 2
let date = calendar.date(from: components)!
let range = calendar.range(of: .day, in: .month, for:date)!
//let range = calendar.range(of: .day, in: .month, for:currentDate)!
print(range.count)
cell.backgroundColor = UIColor.white
if isValidDayCell(indexPath: indexPath as NSIndexPath) && indexPath.item < weekdayOffset + range.count
{
//print(weekdayOffset)
//var dayToDisplay = indexPath.row - weekdayOffset
cell.DaysCell.text = String(indexPath.item + 1 - weekdayOffset)
}
else
{
cell.DaysCell.text = ""
}
return cell
}
private let headerIdentifier = "headerId"
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView
{
let header = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: headerIdentifier, for: indexPath) as! headerView
//header.title.text = "calendar"
dateFormatter.locale = NSLocale.current
dateFormatter.dateStyle = .full
//var convertedDate = dateFormatter.string(from: currentDate)
var components = calendar.dateComponents([.day, .month, .year], from: currentDate)
components.month = 2
let monthName = DateFormatter().monthSymbols[components.month! - 1]
//header.updateMonthHeader(text: String(components.month!))
header.updateMonthHeader(text: monthName)
//header.backgroundColor = UIColor.black
return header
}
func isValidDayCell(indexPath: NSIndexPath) -> Bool {
return indexPath.row >= weekdayOffset
}
fileprivate let itemsPerRow: CGFloat = 10
// MARK: UICollectionViewDelegate
/*
// Uncomment this method to specify if the specified item should be highlighted during tracking
override func collectionView(_ collectionView: UICollectionView, shouldHighlightItemAt indexPath: IndexPath) -> Bool {
return true
}
*/
/*
// Uncomment this method to specify if the specified item should be selected
override func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool {
return true
}
*/
/*
// Uncomment these methods to specify if an action menu should be displayed for the specified item, and react to actions performed on the item
override func collectionView(_ collectionView: UICollectionView, shouldShowMenuForItemAt indexPath: IndexPath) -> Bool {
return false
}
override func collectionView(_ collectionView: UICollectionView, canPerformAction action: Selector, forItemAt indexPath: IndexPath, withSender sender: Any?) -> Bool {
return false
}
override func collectionView(_ collectionView: UICollectionView, performAction action: Selector, forItemAt indexPath: IndexPath, withSender sender: Any?) {
}
*/
}
extension DaysViewController : UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let widthPerItem = view.frame.width / itemsPerRow
return CGSize(width: widthPerItem, height: widthPerItem)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets{
return sectionInsets
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 20
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
if collectionView.dataSource != nil {
let size = CGSize(width: view.frame.width, height: headerHeight)
return size
}
else
{
return CGSize(dictionaryRepresentation: 0 as! CFDictionary)!
}
}
}
最佳答案
您还没有为 UIView
添加任何尺寸
UIView(frame: CGRect(x: WHATEVER , y: WHATEVER, width: WHATEVER , height: WHATEVER))
所以代替
let v = UIView()
应该是
let v = UIView(frame: CGRect(x: WHATEVER , y: WHATEVER, width: WHATEVER , height: WHATEVER))
正如 NiravD 添加的那样,您还应该定义 UILabel
框架
关于swift - 在我的 collectionview Controller 中添加一个 UIView header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41476458/
我在 Storyboard 中有一个 collectionView,如下所示: 注意约束:Collection View.top = Search Bar.bottom 我不想要该行上方的 Colle
我有一个包含两个部分的 Collection View ,每个部分都有一个项目。部分中的单元格包含 Collection View ,我需要使高度单元格适合内容 Collection View 。 我
我见过将 Collection View 嵌套在 TableView 中的解决方案,但对于我的应用程序,我需要有 2 个 Collection View ,因为这样可以更轻松地执行其他操作。 因此,让
感谢帮助。 如上所示,CollectionView ItemSize.height 比 CollectionView.height 大。我只是在 viewDidLayoutSubviews() 中设置
我有一个collectionview(A),它可以作为“卡片 View ”来滑动。在最后一个卡/单元格中,我有另一个 Collection View (B)来显示更多单元格。到目前为止,一切都很好!一
我正在寻找一种方法,当您滚动到 collectionView 中的另一个单元格时,可以更改 imageView 中的图像。 因此,当滚动单元格的 (1) 时,我想更改图像 (2)。 创建此内容的最佳方
我的 NSCollectionView 项目集成了另一个 NSCollectionView。一切都很好,但在第一个 View 中选择项目时就不行了。 当我设置collectionView1.isSel
我是一名 Android 开发者,正在尝试学习 iO 开发。 我正在尝试在水平分页滚动器内实现垂直滚动 UI(就像 ViewPager 内的 RecyclerView)。 我知道我应该使用嵌套的 UI
我在collectionView中有一个collectionView,我希望能够选择第二个collectionView中的一个单元格来执行到另一个ViewController的segue。 目前,当我
我有这两个代表: #pragma mark = UICollectionViewDataSource - (NSInteger)collectionView:(UICollectionView*)co
嘿,我正在尝试在我的动态 Collection View 单元格之后添加一个静态 Collection View 单元格。例如在我的屏幕截图中,在“Study Grind Edition” Colle
是否可以通过在 Collection View Cell .swift 文件中编写代码来阻止我的 Collection View 滚动。我希望能够在用户点击单元格中的按钮时停止滚动,然后在再次按下按钮
我有一个用例,我想要呈现一组collectionViews(或复合 View )。使用 marionette.js 执行此操作的最佳方法是什么? 我的模型结构如下- A | |-- Collectio
我有一个 View Controller ,其中有 tableView 和 Collection View 。我为 collectionView 和 tableView 设置了相同的高度。 前半部分是
在 Visual Studio 2017 中,尝试存档 Xamarin Android 项目时,成功构建后出现以下错误: 无法创建应用程序存档“MyArchive”。这种类型的 CollectionV
我对 Collection View 完全陌生,请帮助我在 Collection View 中垂直和水平滚动单元格: viewcontroller.h #import @interface View
我在一个表格 View 单元格中有两个不同的 collectionView。原因是因为我试图找到实现一个水平 collectionView 和一个显示不同数据的垂直 collecitonView 的最
我想在另一个 collectionview 标题中实现一个 Collection View 幻灯片,但是当我尝试连接 uicollectionview 的导出时,我收到一条错误消息,指出导出无法连接到
您好,我已经为这个问题苦苦挣扎了一段时间,一直想不出来。 我想做的是,在 collectionview 单元格内按下一个按钮,然后执行到下一个单元格的转换。 这是我想在 collectionview
在 collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayo
我是一名优秀的程序员,十分优秀!