Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift 日历练习大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

不喜欢码字的程序员有没有,宁愿多敲两行代码,也不愿意多写两个字。 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{

: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

}

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.@H_712_48@month = dayComponents.@H_712_48@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 =@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()

}

}

}

}

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:@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{

if(lastBtn != nil){

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()

if((footView) != nil){

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,请注明来意。