大佬教程收集整理的这篇文章主要介绍了swift 日历练习,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
不喜欢码字的程序员有没有,宁愿多敲两行代码,也不愿意多写两个字。
import Foundation
import UIKit
@objc(DateObject)
var day : Int?
var month : Int?
var year : Int?
var btn :UIButton?
}
import Foundation
extension NSDate{
/**
当前日期所在星期几
returns:星期几
*/
var calendar:NSCalendar =NSCalendar.currentCalendar()
var weekdayComponents:NSDateComponents = calendar.components(NSCalendarUnit.CalendarUnitWeekday,fromDate:self)
var week:NSInteger = weekdayComponents.weekday
week -= 2
if(week < 0){
week += 7;
}
return week
}
/**
当前日期所在月份有多少天
returns:月份天数
*/
func numberOfDaysInMonth()->NSInteger{
var calendar:NSCalendar =NSCalendar.currentCalendar()
var range:NSRange = calendar.rangeOfUnit(NSCalendarUnit.CalendarUnitDay,inUnit:NSCalendarUnit.CalendarUnitMonth,forDate: self)
var num:NSInteger = range.length
return num;
}
/**
当前日期所在月份第一天
returns:月份第一天
*/
func monthFirstDay() ->NSDate{
var calendar:NSCalendar =NSCalendar.currentCalendar()
var dayComponents:NSDateComponents = calendar.components((NSCalendarUnit.CalendarUnitYear |NSCalendarUnit.CalendarUnitMonth),fromDate: self)
dayComponents.day = 2;
var firstDate:NSDate = calendar.dateFromComponents(dayComponents)!
return firstDate;
}
/**
当前日期所在月份最后一天
returns:月份最后一天
*/
func monthLastDay() ->NSDate{
:rgb(52,fromDate: self)
dayComponents.day =self.numberOfDaysInMonth()+1;
var lastDate:NSDate = calendar.dateFromComponents(dayComponents)!
return lastDate;
}
}
//
// MyCalendar.swift
// CoolTalk
// Created by JoesRain on 15/9/16.
// Copyright (C) 2015年 BreazeMago. All rights reserved.
//
import UIKit
import Foundation
@objc(CalendarJoes)
class CalendarJoes:UIView {
var num:NSInteger!
var date:NSDate!
var firstDate:NSDate!
var lastDate:NSDate!
var headView:UIView!
var footView:UIView!
var title:UILabel!
var dayArray:NSMutableArray!
var lastBtn:UIButton!
var delegate:TestDelegate!
var Today:DateObject!
override init(frame: CGRect) {
super.init(frame: framE)
self.BACkgroundColor =UIColor.whiteColor();
date = NSDate()
num = date!.numberOfDaysInMonth()
firstDate =date!.@H_278_16@monthFirstDay()
lastDate =date!.@H_278_16@monthLastDay()
dayArray =NSMutableArray()
Today = DateObject()
var calendar:NSCalendar =NSCalendar.currentCalendar()
var dayComponents:NSDateComponents = calendar.components((NSCalendarUnit.CalendarUnitYear |NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay),fromDate: date!)
Today?.year = dayComponents.year
Today?.@H_712_48@month = dayComponents.@H_712_48@month
Today?.day = dayComponents.day
initUI()
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func initUI(){
createHeadView()
createFootView()
}
/**
创建日历具体日期
*/
func createFootView(){
dayArray?.removeAllObjects()
var scw = self.bounds.width
footView = UIView(frame: CGRectMake(0,85,scw,200))
//footView?.BACkgroundColor = UIColor.lightGrayColor()
var thisDay = NSDate()
var week:NSInteger =firstDate!.dayOfWeek()
var tmp:NSInteger = week
var col:NSInteger = 0
var max:Float = (Float)(week+num!)/7
max += 0.4;
max = roundf(maX)
//println("week+num = \(week+num!),max = \(maX)")
var height:Float = 200.00/max
height = roundf(height)
var width:Float = (Float)(scw-40)/7
width = roundf(width)
var j:NSInteger = 0
vartest1:Bool =NSUserDefaults.standardUserDefaults().boolForKey(@H_402_801@"test1")as Bool!
test2:Bool =NSUserDefaults.standardUserDefaults().boolForKey(@H_402_801@"test2")as Bool!
if(NSUserDefaults.standardUserDefaults().DictionaryForKey(@H_402_801@"test3") != nil){
vartest3: Dictionary =NSUserDefaults.standardUserDefaults().DictionaryForKey(@H_402_801@"test3")as Dictionary!
//varvalue:NSString = Dict.objectForKey("three") as NSString
var test4:NSInteger =test3[@H_402_801@"test3"]!.IntegerValue
}
var obj:DateObject = DateObject()
var calendar:NSCalendar =NSCalendar.currentCalendar()
var dayComponents:NSDateComponents = calendar.components((NSCalendarUnit.CalendarUnitYear |NSCalendarUnit.CalendarUnitMonth),fromDate: date!)
obj.year = dayComponents.year
obj.@H_712_48@month = dayComponents.@H_712_48@month
obj.day = j+1
tmp += 1
}
week = tmp%7
col = tmp/7
var off_x = Float(week)*width + 20
var off_y = Float(col)*height
var btn:UIButton = UIButton(frame:CGRectMake(CGFloat(off_X),CGFloat(off_y),CGFloat(width),CGFloat(height)))
var title:UILabel = UILabel(frame: CGRectMake(0, CGFloat((height-15)/2),15))
title.text =@H_402_801@"\@H_402_801@(j+1@H_402_801@)"
title.font =UIFont.systemFontOfSize(18);
title.textAlignment =NSTextAlignment.Center
btn.addTarget(self,action:@H_402_801@"dayClick:",forControlEvents: UIControlEvents.TouchUpInsidE)
footView?.addSubview(btn)
btn.enabled =false;
title.textColor =UIColor(red: CGFloat(0.62),green:CGFloat(0.62),blue: CGFloat(0.62),alpha: CGFloat(1))
if(date?.laterDate(thisDay) ==date){
btn.enabled =true;
title.textColor =UIColor.blackColor()
}else{
if(obj.year! == Today.year!)
if(obj.@H_712_48@month! ==Today.@H_712_48@month!){
if((Int(obj.day!)-Int(Today.day!)) >= 3){
btn.enabled =true;
title.textColor =UIColor.blackColor()
}
}
}
}
}
obj.btn = btn
btn.tag = j
dayArray?.addObject(obj)
//println("obj is \(obj.year) \(obj.month) \(obj.day)")
}
self.addSubview(footView!)
var swipLeft:UISwipeGestureRecognizer =UISwipeGestureRecognizer(target:self,action:@H_402_801@"nextMonth")
var swipRight:UISwipeGestureRecognizer =UISwipeGestureRecognizer(target:self,action:@H_402_801@"preMonth")
swipLeft.direction =UISwipeGestureRecognizerDirection.Left
swipRight.direction =UISwipeGestureRecognizerDirection.Right
footView?.addGestureRecognizer(swipLeft)
footView?.addGestureRecognizer(swipRight)
}
/**
选中日期
*/
func dayClick(sender: UIButton){
if((sender.imageForState(UIControlState.Normal) ) !=nil){
sender.setImage(nil,forState:UIControlState.Normal)
}else{
lastBtn!.setImage(nil,forState:UIControlState.Normal)
}
sender.setImage(UIImage(named:@H_402_801@"btn_calendar"),forState: UIControlState.Normal)
lastBtn = sender
}
var obj:DateObject? = dayArray!.objectATindex(Int(sender.tag))as? DateObject
//println("this is day click,\(day!.year)\(day!.month) \(day!.day)")
var str:String = self.getDateString(obj!)
self.delegate?.SELEctStartDay(str)
}
func getDateString(obj:DateObject) -> String{
var str = String(format:@H_402_801@"%ld/%02ld/%02ld",obj.year!,obj.@H_712_48@month!,obj.day!)//"\(year)\(month)\(day)"
return str;
}
/**
*/
func createHeadView(){
var scw = self.bounds.width
headView = UIView(frame: CGRectMake(0,70))
headView?.BACkgroundColor =UIColor.whiteColor()
self.addSubview(headView!)
//var leftBtn:UIButton = UIButton(frame: CGRectMake(25,15,8,13))
var leftBtn:UIButton = UIButton(frame: CGRectMake(20,28,28))
//leftBtn.BACkgroundColor = UIColor.grayColor()
leftBtn.tag = 100;
var leftImg:UIImage = UIImage(named:@H_402_801@"list_arrowBACk.png")!
//leftBtn.setBACkgroundImage(leftImg,forState: UIControlState.Normal)
leftBtn.setImage(leftImg,forState:UIControlState.Normal)
leftBtn.imageEdgeInsets =UIEdgeInsetsmake(5,5,10,15)
leftBtn.addTarget(self,action:SELEctor(@H_402_801@"buttonAction:"),forControlEvents: UIControlEvents.TouchUpInsidE)
headView?.addSubview(leftBtn)
title = UILabel(frame: CGRectMake((scw-100)/2,100,20))
title!.text =DatetoString(date!)
title!.textAlignment =NSTextAlignment.Center
headView?.addSubview(title!)
var rightBtn:UIButton = UIButton(frame: CGRectMake(scw-25-18,28))
rightBtn.tag = 101;
//rightBtn.BACkgroundColor = UIColor.grayColor()
var rightImg:UIImage = UIImage(named:@H_402_801@"list_arrowhead.png")!
//rightBtn.setBACkgroundImage(rightImg,forState: UIControlState.Normal)
rightBtn.setImage(rightImg,forState:UIControlState.Normal)
rightBtn.imageEdgeInsets =UIEdgeInsetsmake(10,5)
rightBtn.addTarget(self,forControlEvents: UIControlEvents.TouchUpInsidE)
headView?.addSubview(rightBtn)
var i:CGFloat = 0
for i ; i<7 ;i++ {
var w:CGFloat = ((CGFloat)(scw-40)/7)
var off_x = i*w + 20
var lal:UILabel = UILabel(frame: CGRectMake(off_x,60,w,10))
lal.textAlignment =NSTextAlignment.Center
switch i {
case 0:
lal.text =@H_402_801@"日@H_402_801@"
case 1:
lal.text =@H_402_801@"一@H_402_801@"
case 2:
lal.text =@H_402_801@"二@H_402_801@"
case 3:
lal.text =@H_402_801@"三@H_402_801@"
case 4:
lal.text =@H_402_801@"四@H_402_801@"
case 5:
lal.text =@H_402_801@"五@H_402_801@"
case 6:
lal.text =@H_402_801@"六@H_402_801@"
default:
@H_402_801@ ""
}
headView?.addSubview(lal)
}
}
/**
*/
func buttonAction(sender: UIButton)
//println("btn click tag is \(sender.tag)")
if(sender.tag == 100){
preMonth()
}else{
nextMonth()
}
}
/**
日期转为字符串
:param: date 日期
:returns: 日期字符串
*/
func DatetoString(date:NSDate)->String
var outputFormatter:NSDateFormatter = NSDateFormatter()
var timezone:NSTimeZone = NSTimeZone(name: @H_402_801@"Asia/Shanghai")!
outputFormatter.timeZone = timezone
outputFormatter.dateFormat =@H_402_801@"yyyy年@H_402_801@mM月@H_402_801@"
var str:String = outputFormatter.StringFromDate(datE)
return str;
}
/**
当前日期前一个月
returns:前一个月
*/
func preMonth(){
var calendar:NSCalendar =NSCalendar.currentCalendar()
var dayComponents:NSDateComponents = calendar.components((NSCalendarUnit.CalendarUnitYear |NSCalendarUnit.CalendarUnitMonth),fromDate: date!)
dayComponents.@H_712_48@month -= 1;
var preDate:NSDate = calendar.dateFromComponents(dayComponents)!
date = preDate
num = date!.numberOfDaysInMonth()
lastDate =date!.@H_278_16@monthLastDay()
footView?.removeFromSuperview()
createFootView()
}
title?.text = DatetoString(preDatE)
}
/**
当前日期下一个月
returns:下一个月
*/
func nextMonth(){
:rgb(52,fromDate: date!)
dayComponents.@H_712_48@month += 1;
var nextDate:NSDate = calendar.dateFromComponents(dayComponents)!
date = nextDate
footView?.removeFromSuperview()
createFootView()
}
title?.text = DatetoString(nextDatE)
}
}
以上是大佬教程为你收集整理的swift 日历练习全部内容,希望文章能够帮你解决swift 日历练习所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。