swift初探:一些简单的实用性方法和一个上下滑动拉伸图片的简单动画
来源:互联网 发布:y系列电机铁芯数据大全 编辑:程序博客网 时间:2024/06/09 10:21
初学swift,写此文谨用来记录。
都说用过OC的再来学swift上手快,这点我不反对,但刚接触swift时真的很不适应。
首先就是swift没有宏!!!wtf!!!无奈之下,只能去造一些假宏,比如设备宽高。刚开始可能以为就是这样:
let Screen_width = UIScreen.main.bounds.size.width//屏幕宽度
let Screen_height = UIScreen.main.bounds.size.height//屏幕高度
但这样,由于不像宏一样在之后不会调用UIScreen.main.bounds.size.width这段代码,也就是Screen_width就不会随着翻转屏幕而改变,这样显然是不行的。所以,swift大多数宏都建议用函数去写
比如:
func Screen_width()->CGFloat{
return UIScreen.main.bounds.size.width//屏幕宽度
}
func Screen_height()->CGFloat{
return UIScreen.main.bounds.size.height//屏幕宽度
}
再比如获取随机色,rgb色等等:
func RGBA(r:CGFloat,g:CGFloat,b:CGFloat,a:CGFloat) ->UIColor{
return UIColor(red: r, green: g, blue: b, alpha: a)
}
func randomColor() ->UIColor{
return RGBA(r:CGFloat(arc4random()%255)/256.0, g:CGFloat(arc4random()%255)/256.0, b:CGFloat(arc4random()%255)/256.0, a:1.0)
}
func UIColorFromRGB (rgbValue:NSInteger)->UIColor{
letr = ((rgbValue &0xFF0000) >>16)
letg = CGFloat((rgbValue &0xFF00) >>8)
letb = CGFloat(rgbValue &0xFF)
return RGBA(r: r/255.0, g: g/255.0, b: b/255.0, a:1.0)
}
再比如自定义打印,延迟执行函数:
func WY_NSLOG1(_messsage :T, file :String=#file, funcName :String=#function) {
#ifDEBUG
let fileName = (file as NSString).lastPathComponent
print("\(fileName):(\(funcName)):\(messsage)")
#endif
}
typealias funcBlock = () -> ()
func Delay(time:Double,action:funcBlock!){
let delay =DispatchTime.now() + time
DispatchQueue.main.asyncAfter(deadline: delay) {
action()
}
}
虽然看起来比宏要难用,但好歹是能满足我们需求的。swift作为苹果取代oc的语言,优点自然是多多,这里就不再多说。说下swift单例吧
OC单例:
+ (id) shareInstance
{
static dispatch_once_t onceToken;
static TestMananger * manager =nil;
dispatch_once(&onceToken, ^{
manager = [[TestMananger alloc] init];
});
return manager;
}
swift单例:
classBasicApi:NSObject{
static let sharedInstance =BasicApi()
}
一句话单例,确实好用。。。
下边随便写个小demo:一个上下滑动拉伸图片的简单动画
首先声明:
let imageHeight:CGFloat=169.0//图片真实尺寸高度
let imageView = UIImageView()
创建scrollview
let scrollView:UIScrollView = UIScrollView(frame:self.view.bounds)
scrollView.contentSize = CGSize(width:0,height:Screen_height()*2)
scrollView.delegate = self
scrollView.backgroundColor = randomColor()
scrollView.showsVerticalScrollIndicator = false
imageView.frame = CGRect(x:0,y:0,width:Screen_width(),height:imageHeight)
imageView.image = UIImage.init(named:"image.jpg")
imageView.contentMode = UIViewContentMode.scaleAspectFill;
scrollView.addSubview(imageView)
self.view.addSubview(scrollView)
实现代理
/*
*UIScrollViewDelegate
*/
func scrollViewDidScroll(_scrollView:UIScrollView) {
lety = scrollView.contentOffset.y
if y < 0 {
/*
*这里也是优于OC的一点,用过OC的都懂=_=
*/
imageView.frame.origin.y = y
imageView.frame.size.height = -y +imageHeight
}
WY_NSLOG1(y)
}
就这样,在下拉时,图片的位置不变,尺寸变大,这种动画算是比较常见的了
- swift初探:一些简单的实用性方法和一个上下滑动拉伸图片的简单动画
- jQuery中通过animate做一个简单的上下滑动的动画案例
- UIView控件的一些常用方法和简单动画设置
- 一个简单的WPF图片动画制作
- Android超简单实现listview上下拉伸回弹动画效果
- 图片的简单截取与拉伸
- swift 实现简单的动画
- jQuery的动画-上下滑动
- Tab切换动画滑动效果的一个简单实现
- 用swift写一个简单的自定义modal转场动画
- 图片简单的滑动特效
- 图片拉伸的方法
- 实现View的 上下滑动1--简单实现
- 动画的一些简单书写
- C# 一个图片上传的简单方法
- ios 简单的图片动画
- Swift实现一个简单的加载动画,以及动画的详解
- 动画-图片的上下移动
- 【b404】虫食算
- 论学习的重要性之 -- 影院售票系统
- 使用锚文本链接导航,让你的网站生动起来
- leetcode74. Search a 2D Matrix
- 使用RocketMQ的客户端使用
- swift初探:一些简单的实用性方法和一个上下滑动拉伸图片的简单动画
- js对象构造方法
- 前端开发面试题之 JavaScript
- log4j.properties 详解与配置步骤
- 264. Ugly Number II
- ThinkPHP框架简单应用之mysql增删改查
- listener.ora 、sqlnet.ora 、tnsnames.ora
- lua命令行参数
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。