swift 日历练习

swift 日历练习,第1张

概述不喜欢码字的程序员有没有,宁愿多敲两行代码,也不愿意多写两个字。 import Foundation import UIKit @objc(DateObject) class DateObject: NSObject{     var day : Int?     var month : Int?     var year : Int?     var btn :UIButton? } impor

不喜欢码字的程序员有没有,宁愿多敲两行代码,也不愿意多写两个字。


import Foundation

import UIKit


@objc(DateObject)


class DateObject: NSObject{

var day : Int?

var month : Int?

var year : Int?

var btn :UIbutton?

}


import Foundation


extension NSDate{

/**

当前日期所在星期几

returns:星期几

*/

func dayOfWeek() ->NSInteger{

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{

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!.monthFirstDay()

lastDate =date!.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?.month = dayComponents.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("test1")as Bool!

test2:Bool =NSUserDefaults.standardUserDefaults().boolForKey("test2")as Bool!

if(NSUserDefaults.standardUserDefaults().dictionaryForKey("test3") != nil){

vartest3: Dictionary =NSUserDefaults.standardUserDefaults().dictionaryForKey("test3")as Dictionary!

//varvalue:Nsstring = dict.objectForKey("three") as Nsstring

var test4:NSInteger =test3["test3"]!.integerValue

}

for j; j<num ;j++ {

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.month = dayComponents.month

obj.day = j+1

if(j != 0){

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 ="\(j+1)"

Title.Font =UIFont.systemFontOfSize(18);

Title.textAlignment =NSTextAlignment.Center

btn.addTarget(self,action:"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.month! ==Today.month!){

if((Int(obj.day!)-Int(Today.day!)) >= 3){

btn.enabled =true;

Title.textcolor =UIcolor.blackcolor()

}

}

}

}

if(!isstartTime){

}

btn.addSubvIEw(Title)

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:"nextMonth")

var swipRight:UISwipeGestureRecognizer =UISwipeGestureRecognizer(target:self,action:"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{

if(lastBtn != nil){

lastBtn!.setimage(nil,forState:UIControlState.normal)

}

sender.setimage(UIImage(named:"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:"%ld/%02ld/%02ld",obj.year!,obj.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:"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("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:"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 =""

case 1:

lal.text =""

case 2:

lal.text =""

case 3:

lal.text =""

case 4:

lal.text =""

case 5:

lal.text =""

case 6:

lal.text =""

default:

""

}

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: "Asia/Shanghai")!

outputFormatter.timeZone = timezone

outputFormatter.dateFormat ="yyyyMM"

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.month -= 1;

var preDate:NSDate = calendar.dateFromComponents(dayComponents)!

date = preDate

num = date!.numberOfDaysInMonth()

lastDate =date!.monthLastDay()

if((footVIEw) != nil){

footVIEw?.removeFromSupervIEw()

createFootVIEw()

}

Title?.text = DatetoString(preDate)

}

/**

当前日期下一个月

returns:下一个月

*/

func nextMonth(){

date!)

dayComponents.month += 1;

var nextDate:NSDate = calendar.dateFromComponents(dayComponents)!

date = nextDate

footVIEw?.removeFromSupervIEw()

createFootVIEw()

}

Title?.text = DatetoString(nextDate)

}


}

总结

以上是内存溢出为你收集整理的swift 日历练习全部内容,希望文章能够帮你解决swift 日历练习所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1084455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存