2015-01-13 10:36:10 cg1991130 阅读数 12055
  • Gerrit代码Review高阶实战

    代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但是在实际项目执行过程中,却因为种种原因被Delay甚至是忽略。

    4121 人正在学习 去看看 CSDN讲师

       前几话我们实现了Review按钮的功能,今天来实现Share按钮的功能,由于两个功能的相似性,所以新建一个控制器,ShareViewController类,把ReviewViewController类的代码复制过去进行修改,share中不需要transforView和label,删掉,然后把按钮改成四个放到基view中,代码如下:

let buttonWidth:CGFloat = 60
        let buttonY:CGFloat = 200 //三个按钮相同的规格
        let faceBtn = UIButton(frame: CGRectMake(100, buttonY, buttonWidth, buttonWidth))
        faceBtn.setBackgroundImage(UIImage(named: "facebook"), forState: .Normal)
        self.view.addSubview(faceBtn)
        
        let twitterBtn = UIButton(frame: CGRectMake(160, buttonY, buttonWidth, buttonWidth))
        twitterBtn.setBackgroundImage(UIImage(named: "twitter"), forState: .Normal)
        self.view.addSubview(twitterBtn)
        
        let messageBtn = UIButton(frame: CGRectMake(100, 260, buttonWidth, buttonWidth))
        messageBtn.setBackgroundImage(UIImage(named: "message"), forState: .Normal)
        self.view.addSubview(messageBtn)
        
        let emailBtn = UIButton(frame: CGRectMake(160, 260, buttonWidth, buttonWidth))
        emailBtn.setBackgroundImage(UIImage(named: "email"), forState: .Normal)
        self.view.addSubview(emailBtn)

然后再DetailViewController中添加share的action

    func clickShare(sender: UIButton){
        let share = ShareViewController()
        self.presentViewController(share, animated: true, completion: nil )//临时展示一个控制器
    }

运行效果如图:


然后给图片设置一个背景色,颜色的话用mac自带的取色器就可以获得:


现在我们来实现这几个按钮的动画效果,让他们从不同的敌方飞进屏幕然后组合成上图的样子,首先让facebook的图标从下面飞入,让email的图标从上面飞入。

在按钮的代码后面继续增加如下代码:

let upTranslate = CGAffineTransformMakeTranslation(0, -500)
        let downTranslate = CGAffineTransformMakeTranslation(0, 500)
        faceBtn.transform = downTranslate
        emailBtn.transform = upTranslate

标示了这两个按钮的初始位置,因为动画效果要在viewWillApear中实现,所以按钮必须是全局的,所以我们把按钮的声明放在全局中。

    var faceBtn: UIButton!
    var twitterBtn: UIButton!
    var emailBtn: UIButton!
    var messageBtn: UIButton!

然后在viewWillAppear中实现动画,如下:

override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        UIView.animateWithDuration(1.0, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.7, options: nil, animations: { let translate = CGAffineTransformMakeTranslation(0, 0)
            self.faceBtn.transform = translate
            self.emailBtn.transform = translate
            }, completion: nil)
        
    }

注意一下,我们这次是按钮的飞进,使用的是
CGAffineTransformMakeTranslation,依靠坐标来定位,而在Review中使用的方法是整个view从无到有,所以使用的是CGAffineTransforMakeScale。效果如图:


然后如法炮制实现另外两个按钮,延迟设为0.1秒,最后的效果如图,按钮飞入:




2017-03-09 16:35:52 qq_37269542 阅读数 176
  • Gerrit代码Review高阶实战

    代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但是在实际项目执行过程中,却因为种种原因被Delay甚至是忽略。

    4121 人正在学习 去看看 CSDN讲师

swift开发中的一些小方法


swift使用延时

func delay(delay:Double,closure:()->()){
    dispath_after(
        dispath_time(
            DISPATCH_TIME_NOW,
            Int64 (delay * Double CNSEC_PER_SE())
        ),
    dispath_get_man_queue(),closure)
}
//调用的方法为:
self.delay(0.5,closure:{()->() in
    print("调用完成")
})

手势调用的函数

在调用手势函数时,首先要先遵守UIGestureRecognizerDelegate协议
func gestureRecoginzer(gestureRecoginzer:UIGestureRecognizer,shouldReceiveTouch touch:UITouch) -> Bool{
    if touch.View!.isDescendantOfView(mapView){
        return false
    }
    return true
}

直接点击屏幕的触发方法

Override func touchesBegan(touches:set<UITouch>,withEvent event:UIEvent?){

}

移动拖拽屏幕的触发方法

Override func touchesMoved(touches:set<UITouch>,withEvent event:UIEvent?){

}

从当前的app中点击按钮跳到另一个app的方法

一般通过app来调用手机的打电话等功能也是用这种方法来调用的,只是调用的参数不同而已(在此仅供参考)

1.先找到应用程序的描述链接,如:http://itunes.apple.com/gb/app/yi-dong-cai-bian/id391945719?mt=8
2.然后将http://替换为itms://或者itms-apps://:
3.然后再打开这个链接地址: [[UIApplication SharedAppliction]OpenURL:[NSURL URLWithString:@”itms://itunes.apple.com/gb/app/yi-dong-cai-bian/id391945719?mt=8”]];
* 注意:此测试最好在真机上面测试,在模拟器上测试,可能会没有效果

例:在app中跳转到Google Map方法:swift语言
let urlString = "comgooglemaps://?X-Source = 项目的名字 &X-Success = comgooglemaps://&Saddr = &daddr = \(self.destinationCoordinate.latitude),\(self.destinationCoordinate.longitude)&directionsmode=driving"
let url = NSURL(String:urlString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)
UIApplication.SharedAppliction().openURL(url!)

ios使用日期选择器控件 与时间格式化

var datePicker : UIDatePicker!  //日期选择器
var dateFormatter : NSDateFormatter!  //时间格式化

ios中判断textView中的内容是否为空或者全部都是空格可以使用以下方法:

if self.titleValue.text?.StringByTrimmingCharactersInset(NSCharacterSet.WhiteSpaceCharacterset()).StringLength() == 0 {
    print("")
}

//或者使用:
if self.titleValue.text?.StringByTrimmingCharactersInset(NSCharacterSet.WhiteSpaceCharacterset()) == "" {
    print("")
}

ios 中常见的Bug :例如在ios10之后对NSArray和NSMutableArray分辨明确,所以在有时候会出现由于此原因导致在ios9中运行没有问题,但是在ios10之后就会出现程序闪退的现象

使用U盘做Mac系统的启动盘(使用Mac电脑):

使用U盘做Mac系统的启动盘,即将系统装到U盘中,然后用U盘来装Mac系统
在终端中输入:Sudo/Applications/Install\macOS\Sierra.app/Contents/Resources/Createinstallmedia -- volumes/未命名 -- applicationpath/Applications/Install \ macOS\Sierra.app -- nointeraction
*注意路径随着U盘和系统在Mac上的位置的不同而不同,并且要将U盘的名字设为“未命名”(本次装的系统是Sierra版本的系统)

UIImage的一个属性 例:

let image = UIImage(name:"jiahao")!.imageWithRenderingModel(.AlwaysTemplate)
*这个属性可以让图片自适应view的背景颜色,例如本次所用的环境“jiahao”这个图标是个黑色的加号。在当页面的背景色也是黑色的时候该方法就会将自己的图标变成白色,即将图标自身的与背景色重叠的黑色变成白色,其他的色调对换,即白色的部分变成黑色
2018-12-11 12:50:47 weixin_41735943 阅读数 83
  • Gerrit代码Review高阶实战

    代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但是在实际项目执行过程中,却因为种种原因被Delay甚至是忽略。

    4121 人正在学习 去看看 CSDN讲师
//设置动画效果,withDuration动画时间长度,delay刷新间隔时间
        UIView.animate(withDuration: 0.4, delay:0.01, options: [], animations: {
            ()-> Void in
            self.setCardUI(view: uiTap.view!)
        },completion:{
            (finished:Bool) -> Void in
            UIView.animate(withDuration: 0.1, animations:{
                ()-> Void in
                //完成动画时
                self.scrollView.isScrollEnabled = false
            })
        })

 

2018-11-29 16:02:12 NoPolun_iOS 阅读数 310
  • Gerrit代码Review高阶实战

    代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但是在实际项目执行过程中,却因为种种原因被Delay甚至是忽略。

    4121 人正在学习 去看看 CSDN讲师

这个弹窗swift4之后会报错,自己根据提示修改才能引用成功

最简单使用

   Toast.init(text: "hhdsd").show()

 Toast.init(text: "测试数据", delay: 1, duration: 2).show()

自己控制消失

//        let toast = Toast.init(text: "测试s数据")
//        toast.show()
//        toast.cancel()

        //通过患者管理中心获得当前窗口然后调用窗口的取消方法,关闭窗口
//        if let currentToast = ToastCenter.default.currentToast {
//            currentToast.cancel()
//        }

        //关闭所有窗口
//        ToastCenter.default.cancelAll() 

//设置窗口背景为橙色
        
        ToastView.appearance().backgroundColor  = UIColor.red

//设置文字颜色

 ToastView.appearance().textColor = UIColor.blue

//设置字体及字号

   ToastView.appearance().font = UIFont.init(name: "Arial", size: 12)

//设置文字距离边框距离
       ToastView.appearance().textInsets = UIEdgeInsets.init(top: 16, left: 20, bottom: 16, right: 20)

//设置边框圆角弧度
        ToastView.appearance().cornerRadius = 0

2016-07-14 10:50:05 json_vip 阅读数 2324
  • Gerrit代码Review高阶实战

    代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但是在实际项目执行过程中,却因为种种原因被Delay甚至是忽略。

    4121 人正在学习 去看看 CSDN讲师

前言

开发中,经常会用到定时执行网络请求、倒计时、计时器等功能,本篇文章介绍在iOS开发中,Swift怎样使用GCD实现这些功能。

执行一次

下面的代码将会在5秒后执行,且只执行一次。

let time: NSTimeInterval = 5.0
let delay = dispatch_time(DISPATCH_TIME_NOW, Int64(time * Double(NSEC_PER_SEC)))

dispatch_after(delay, dispatch_get_main_queue()) {
    self.getTaskList(false)
}

执行多次

下面的代码是一个60秒倒计时的例子。

var _timeout: Int = 60
let _queue: dispatch_queue_t = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
let _timer: dispatch_source_t = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, _queue)

// 每秒执行
dispatch_source_set_timer(_timer, dispatch_walltime(nil, 0), 1 * NSEC_PER_SEC, 0)   

dispatch_source_set_event_handler(_timer) { () -> Void in

    if _timeout <= 0 {

        // 倒计时结束
        dispatch_source_cancel(_timer)  

        dispatch_async(dispatch_get_main_queue(), { () -> Void in

            // 如需更新UI 代码请写在这里
        })

    } else {

        print(_timeout)
        _timeout--

        dispatch_async(dispatch_get_main_queue(), { () -> Void in

            // 如需更新UI 代码请写在这里
        })

    }
}

dispatch_resume(_timer)

交友互动:

本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

SWift 的多线程延时

阅读数 144

没有更多推荐了,返回首页