自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

书写人生

软件开发是个系统工程,除了语言、组件和接口,还有设计模式、设计思想等内容,只有充分分析业务逻辑,才能编写出切实可行的代码。

  • 博客(54)
  • 资源 (49)
  • 收藏
  • 关注

转载 提取多层嵌套Json数据

在.net 2.0中提取这样的json  {"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}}  引用命名空间  using Newtonsoft.Json;  using Newtonsoft.Json.Linq;  可以把上面的JSON看成一个对象.你只要写对应的类即可  publ

2017-09-30 11:12:25 7894

原创 HTML5视频直播技术介绍

视频直播如火如荼,为了满足比较火热的移动 Web 端直播需求,一系列的 HTML5 直播技术迅速的发展了起来。只要实现了视频直播的各个技术难点,通过HTML5进行视频直播并非难事。常见的可用于 HTML5 的直播技术共有3种协议:HLS、WebSocket与WebRTC。本文将对基于这3种协议的HTML5直播技术实现做下基础的介绍。一. HLS优点:CDN支持比较好缺点

2017-09-29 15:19:33 1096

转载 采集rtsp流摄像头到浏览器实时播放方案

本文旨在实现使用摄像头采集视频,并且可以在网页实时显示,主要参考的两篇博文为: 1. 视频实时显示的三种方案 2. 使用WebSockets进行HTML5视频直播 我们使用博文1介绍的第三种方案,将摄像头采集到的视频流使用ffmpeg进行编码,并且将其推送给远程服务器,在远程服务器使用stream-server.js处理视频流并且在网页上显示出来。由于原博文介绍详尽,本处不再赘述。 

2017-09-29 15:15:32 56808 11

转载 蘑菇街直播实战技巧带你解决直播开发难题

蘑菇街作为一个电商平台,主要服务对象是女性用户。而蘑菇街直播是今年3月21号正式上线的,最初模仿了已有的直播平台,比如映客、花椒这类的秀场直播。但是上线之后,发现秀场直播的模式并不适合我们。随后我们很快推出了第二个版本,加入了电商模块。4月到7月,加入了各种各样丰富的内容。7月对于蘑菇街直播算是一个重要的里程碑,我们开发了“自由小窗”功能。对于电商而言,直播的成交是可以忽略不计的,但是增添

2017-09-29 15:10:49 1215

转载 音视频相关研究-雷宵骅在读博士的项目

虽然此前没拜读过此公的文章,盖因专业领域不同也;观其一生之成就,令我等望尘莫及,来自心底的唯有敬意!Github:http://leixiaohua1020.github.io/CSDN博客:http://blog.csdn.net/leixiaohua1020#Experiment ProjectsVideoEyeopen-source

2017-09-29 15:09:51 814

转载 开源代码Window下搭建rtmp流媒体服务器

有这样需求,将摄像头视屏发布出去,并且需要在web网页上通过Flash播放器播放。首先Flash被我所知道的所有浏览器所支持。如果是Activex控件。还需要被用户额外安装,而且一不小心还会出问题。但是Flash player默认是被安装的。而且是比较稳定的。虽然开源的VLC播放器所提供的OCX相当不错。可是个人还是觉得没有Flash直接播放方便。flash支持的视频格式有限,像mp4等格式都不会

2017-09-29 15:08:47 1039

转载 Android基于腾讯云的视频聊天研究

最近有个需求是与视频聊天相关,之前有看到过腾讯云有视频直播的产品,不清楚是否也支持视频聊天。经过一番查找,发现除了直播的demo,还专门有一个视频聊天的demo,于是便下下来研究一下。这是文档:https://www.qcloud.com/document/product/268/7603这是视频直播demo工程:https://github.com/zhaoyang21cn/IL

2017-09-29 15:06:57 1534 2

转载 HTML5视频直播及H5直播扫盲

分享内容简介: 目前视频直播,尤其是移动端的视频直播已经火到不行了,基本上各大互联网公司都有了自己的直播产品,所以对于直播的一些基本知识和主要技术点也要有所了解,本次分享就向大家介绍一下其中的奥秘。内容大体框架: 1. 怎样利用 HTML5 来播放直播视频 2. 怎样录制直播视频 3. 怎样实时上传直播视频 4. 直播中的用户交互分享人介绍:吕鸣 目前在

2017-09-29 15:04:42 14668 1

转载 EasyUI 之 DataGrid的两种赋值方法

方法一:使用ViewData赋值        首先,我们创建一个User的实体类[csharp] view plain copy print?public class User      {          public string UserID;              public string UserName;          

2017-09-28 09:02:14 10995

原创 C# for循环倒序输出数组元素

string strRestult = "";                string[] arryData = strData.Split(',');                string[] arryName = strName.Split(',');                int j = 1;                for (int i = arry

2017-09-28 09:00:27 11280 1

原创 自创漫画图

2017-09-27 14:21:03 999

原创 微信公众平台HTTPS方式调用配置免费https服务器

怎样配置服务器,通过https访问服务器。想要通过https访问,就得有ssl证书,这里可以去阿里云购买免费的。前提1,已经备案好的域名,2,服务器(这里我推荐阿里云,后面会说为什么)下面是方法步骤1,打开阿里云官网,https://www.aliyun.com/2,点击安全云盾--》证书服务证书服务器点击购买证书点击免费型DV SS

2017-09-27 10:59:38 24041 5

原创 公众平台接口 win7 的环境下HTTPS方式调用的配置

要想成功架设SSL安全站点关键要具备以下几个条件。1、需要从可信的证书办法机构CA获取服务器证书。 2、必须在WEB服务器上安装服务器证书。 3、必须在WEB服务器上启用SSL功能。 4、客户端(浏览器端)必须同WEB服务器信任同一个证书认证机构,即需要安装CA证书。下面,我们对照上面的四部,进行一步一步的操作1:需要从可信的证书办法机构CA获取服务器证书(由于我们是在本地

2017-09-27 10:40:12 954

原创 JavaScript中判断日期是否相等

做一个节日提示网页,首先获得当前日期,然后与最近的节日比较,如果恰好是同一天,提示“XX节快乐!”否则,提示“离XX节还有X天”。判断是否恰好同一天的时候我用了类似如下代码:var today=new Date();var valentine=new Date(today.getFullYear(),1,14);if(today==valentine){ alert("情人节快乐!

2017-09-27 10:15:24 1766

转载 axure原型设计之tab选项卡

Tab选项卡是网页设计或者APP设计中相当常见的一个元素,多用于网站导航,商品分类,信息隐藏等等地方,也是学习axure原型设计的最基础技能之一。那么,这里就教大家如何快速地设计一个简单的tab选项卡原型,主要有以下3步:第一步:拖拉摆放相关的控件1、三个同样大小的矩形控件,分别命名为“tab1”,“tab2”和“tab3”,均设置为无底边、黑边、灰底矩形,整齐横排在动态面板的左上

2017-09-26 10:06:53 982

原创 通过axure做原型设计生成的html代码可以让开发直接用吗

Axure1、Axure主要用途是原型设计2、既然是设计,应该以图为主,框架为主,而不是代码3、通过Axure生成的html并不能直接拿来用,因为要经过调整,重新编写,增删改查以及CSS样式表的添加因为术业有专攻,做什么的就是做什么的,画图就要画好图,前端开发就前端开发,后台开发就后台开发,分工明确,团队协作,才能做出好东西答案肯定是不可以,

2017-09-26 10:05:35 11577 3

转载 Axure做手机滑动解锁的效果

滑动解锁不是什么新鲜的玩意儿了,不过据说是iPhone的专利,介个,就意味着这个效果其他操作系统不能用,不管它,先做出来再说,可以套用在其他交互动作上嘛。准备两张图片,这两天是高考完了接着中考嘛,那我弄了两张代表毕业季的照片。宽300,高460,稍后就会揭晓。两张图片自然要放在动态面板里嘛,所以先拖进来一个动态面板,命名screen,宽和高就是图片的宽高值。

2017-09-26 09:59:29 2586

转载 Zepto或jQuery移动端下拉刷新,上拉加载更多插件

lang="zh-cn">  name="viewport" content="initial-scale=1, user-scalable=0, minimal-ui"charset="UTF-8"> Zepto或jQuery移动端下拉刷新,上拉加载更多插件 - 素材牛jQuery特效演示  name="full

2017-09-25 14:19:05 1741

原创 微信公众平台接口 动态生成html图片预览无法使用jquery事件的解决方法

function reloadPic(){try{ $(".content").on('click', '.pics', function(){                var aa=$(this).find("img");            var src=[];      for(var i=0;i                    src[i]=

2017-09-25 11:36:38 601

转载 微信小程序低功耗蓝牙

1.简述蓝牙适配器接口是基础库版本 1.1.0 开始支持。 iOS 微信客户端 6.5.6 版本开始支持,Android 客户端暂不支持 蓝牙总共增加了18个api接口。2.Api分类搜索类 连接类 通信类3.API的具体使用详细见官网:https://mp.weixin.qq.com/debug/wxadoc/dev/api

2017-09-22 09:26:51 4389

原创 各种浏览器的缓存机制及相关问题的解决办法

一、   http1.1无效   现都是http1.0的天下了 以上三种基本可以忽略,因为大多情况下都是无效的。无法被浏览器缓存的请求:HTTP信息头中包含Cache-Control:no-cache,pragma:no-cache(HTTP1.0),或Cache-Control:max-age=0等告诉浏览器不用缓存的请求(无效)需要根据Cookie,认证信息等决定

2017-09-22 08:57:34 717

转载 微信公众号模板消息管理

通过模板消息接口,公众号能向关注其账号的用户发送预设模板的消息。模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。本文主要介绍基于C#开发实现公众号模板消息的管理功能。“模板消息功能的推出,将极大地增强服务号的服务通知能力”,在一些一直期待微信模板消息功能开放的公众号运

2017-09-22 08:48:48 20241 1

转载 关于公众平台接口不再支持HTTP方式调用的公告

为保证数据传输安全,提高业务安全性,公众平台将不再支持HTTP方式调用。避免影响正常使用中含有HTTP方式调用的服务,请开发者尽快调整,将现有通过HTTP方式调用的切换成HTTPS调用,平台将于2017年12月30日停止对HTTP方式调用的支持。接口调用方式切换成HTTPS调用指导建议:1.后台程序调用api.weixin.qq.com的接口,采用HTTPS方式,连接端口443,修

2017-09-22 08:19:27 7845

转载 SQL根据下标,返回split分割后字符串

-- =============================================-- Author: -- Create date: -- Description: 根据下标(0开始),返回split分割后字符串,越界返回空字符串-- eg:SELECT dbo.Split_GetByIndex('w1,w2,,,,w,w,ew',',',1)-- =

2017-09-20 10:11:42 1974

转载 SQL 合并列值和拆分列值

合并列值表结构,数据如下:id value----- ------1 aa1 bb2 aaa2 bbb2 ccc 需要得到结果:id values------ -----------1 aa,bb2 aaa,bbb,ccc即:groupby id, 求 value 的和(字符串相加) 1. 旧的解决方法(在sql server

2017-09-20 10:04:58 2228

原创 SQL自定义函数split 将数组(分隔字符串)返回阵列(表)

Create FUNCTION [dbo].[SplitToTable] (     @SplitString nvarchar(max),     @Separator nvarchar(10)=' ' ) RETURNS@SplitStringsTable TABLE ( [id]int identity(1,1), [value] nvarchar

2017-09-20 10:04:20 2787

原创 Jquery 获取div li 属性值

今日                    未就诊                     全部                                         $(function () {       $("li", "#wx7-header").on("click", function() { Name = $(th

2017-09-20 08:49:58 2049

转载 所见即所得:四款免编程移动游戏开发引擎推荐

移动游戏的制作,可以说是整个移动应用开发中,最为复杂的。不仅仅所有的窗体和控件要自己设计开发,核心的玩法也要自己创造。而工具类应用,你可以仅仅使用大多数iOS和Android的系统控件和窗体,就能完成一个简单的应用。无论如何,热爱游戏的人是不怕麻烦的,移动游戏的开发者亦复如是。对于游戏的整个开发流程来说,更多的是在一点点调试游戏。设置各种参数,不断的对细节进行完善。而技术并不是作出好游戏最大的

2017-09-20 08:17:49 9836

原创 jQuery中JSONP的两种实现方式

$(function () { alert("start..."); // 第一种方式 $.ajax({ type: "get", url: "http://localhost:9524/Home/ProcessCallback", // 这个就是不同于当前域的一个URL地址,这里单纯

2017-09-19 11:43:40 8837

转载 NET实现微信公共平台上传下载多媒体文件(转)

/// /// 下载保存多媒体文件,返回多媒体保存路径 /// /// /// /// public string GetMultimedia(string ACCESS_TOKEN, string MEDIA_ID) { string file = string.Empty; st

2017-09-18 18:09:54 613

原创 net 腾讯地图 百度地图逆地址解析

#region 方法 GetQQMaoAddress(string strlatitude, string strlongitude) 通过经纬度获取QQmap地址    ///     ///     ///     ///     ///     ///     public string GetQQMaoAddress(string strlatitude, st

2017-09-18 16:27:47 1676

转载 C# 数组冒泡排序(升序排序):

int[] num = { 8, 5, 7, 6, 54, 6, 4, 12, 2, 0, 1, 3 }; 2 //第一种 3 for (int i = 0; i 1; i++) 4 { 5 for (int j = 0; j 1; j++) 6 {

2017-09-14 11:47:45 17116 2

原创 C#实现控制Windows系统关机、重启和注销的方法:

shutdown命令的参数:shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户shutdown.exe -s -t 时间:设置关机倒计时shutdown.exe -h:休眠shutdown.exe -t 时间:设置关机倒计时。默认值是 30 秒。shutdown.exe -a:取消关机s

2017-09-14 11:39:37 1911

原创 医院排班算法 护士排班法

护士是医院日常运营的基础,科学合理地安排护士工作时间不仅能够缓解其压力,提高护理质量,而且能够降低医院的人力资源运营成本,因此护士排班已成为医院管理工作的重要内容之一。一、周排班法  排班以周为周期的方法为周排班法。一般由病房护士长根据病房护理工作情况进行安排。周排班的特点是对护理人员的值班安排周期短,有一定灵活性,护士长可根据具体需要对护理人员进行动态

2017-09-14 10:54:44 35404 1

转载 Vue入门之组件化开发

Vue入门之组件化开发http://www.jianshu.com/p/6718ab1caa81组件其实就是一个拥有样式、动画、js逻辑、HTML结构的综合块。前端组件化确实让大的前端团队更高效的开发前端项目。而作为前端比较流行的框架之一,Vue的组件和也做的非常彻底,而且有自己的特色。尤其是她单文件组件开发的方式更是非常方便,而且第三方工具支持也非常丰富,社区也非常活跃,第三方组

2017-09-14 10:37:34 2281

转载 vue组件化开发初体验-示例vue-loader-example学习记录

来自vue官方示例:https://github.com/vuejs/vue-loader-example使用了vuejs和webpack,以及一系列webpack加载器,如vue-loader依葫芦画瓢,试了试,有些具体分析还需要再学习学习,先简单记录下具体的做法,屡屡思绪。添加github练习源码:https://github.com/dingyiming/learn-Js-vuejs/tre

2017-09-14 10:35:59 391

转载 使用echart从后台获取数据动态显示到页面

第一次使用Echart绘制图表,看了两天,终于结合后台给整出来了。走过之后再看看,其实很简单的。不多说了,直接上图:第一步:去echarts官方下载最新的js; 官方地址 : echarts.baidu.com            我下的是3.4.0版的:echarts.min.js第二步:创建一个ReportDataBean,在该类中设置两个属性:Listcateg

2017-09-13 09:08:20 11046 2

原创 手机可以播放 网页播放mp4视频,出现有声音无图像问题

发现mp4的视频编码有三种:MPEG4(DivX),MPEG4(Xvid),AVC(H264),我使用格式工厂一个一个尝试。最终发现转换成AVC(H264)编码,完美解决问题。总结:网页播放mp4视频,出现有声音无图像问题,先使用格式工厂转换mp4->mp4格式,输出编码选择AVC(H264),然后在网页中代码调用。

2017-09-13 09:05:34 5924

转载 微信登陆 (微信PC扫码授权登陆) 简单的php代码

微信PC扫码授权登陆 php简单示例代码首先须要申请,必须企业,个体工商户,媒体等申请地址 https://open.weixin.qq.com/我直接上php最简单代码开始登陆//-------配置$AppID = 'wx033336c794d4';$AppSecret = 'd4624c36333337af5443d';$callback

2017-09-13 08:56:15 6748 2

转载 微信小程序登陆及登陆状态保持前后端php代码 缓存redis

微信小程序给出的demo并不是很详细,让人看起来很困惑,小编在此贴出代码供各位朋友参考。 小程序端代码my.jsPage({data: {},onLoad: function (options) {var that = thiswx.checkSession({success: function (

2017-09-13 08:55:13 849

NET图片加减法的验证码控件

NET图片加减法的验证码控件,、 this.CreateCheckCodeImage(GenerateCheckCode()); private string GenerateCheckCode() { int intFirst, intSec, intTemp; string checkCode = String.Empty; System.Random random = new Random(); intFirst = random.Next(1, 10); intSec = random.Next(1, 10); switch (random.Next(1, 3).ToString()) { case "2": if (intFirst < intSec) { intTemp = intFirst; intFirst = intSec; intSec = intTemp; } checkCode = "=" + intFirst + "-" + intSec; Session["ValidCode"] = intFirst - intSec; break; default: checkCode = "=" + intFirst + "+" + intSec; Session["ValidCode"] = intFirst + intSec; break; } //Response.Cookies.Add(new HttpCookie("ValidCode",Movie.Common.AES.EncryptAes(checkCode))); return checkCode; } #region 产生波形滤镜效果 private const double PI = 3.1415926535897932384626433832795; private const double PI2 = 6.283185307179586476925286766559; private System.Drawing.Bitmap TwistImage(Bitmap srcBmp, bool bXDir, double dMultValue, double dPhase) { System.Drawing.Bitmap destBmp = new Bitmap(srcBmp.Width, srcBmp.Height); // 将位图背景填充为白色 System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(destBmp); graph.FillRectangle(new SolidBrush(System.Drawing.Color.White), 0, 0, destBmp.Width, destBmp.Height); graph.Dispose(); double dBaseAxisLen = bXDir ? (double)destBmp.Height : (double)destBmp.Width; for (int i = 0; i < destBmp.Width; i++) { for (int j = 0; j < destBmp.Height; j++) { double dx = 0; dx = bXDir ? (PI2 * (double)j) / dBaseAxisLen : (PI2 * (double)i) / dBaseAxisLen; dx += dPhase; double dy = Math.Sin(dx); // 取得当前点的颜色 int nOldX = 0, nOldY = 0; nOldX = bXDir ? i + (int)(dy * dMultValue) : i; nOldY = bXDir ? j : j + (int)(dy * dMultValue); System.Drawing.Color color = srcBmp.GetPixel(i, j); if (nOldX >= 0 && nOldX < destBmp.Width && nOldY >= 0 && nOldY < destBmp.Height) { destBmp.SetPixel(nOldX, nOldY, color); } } } return destBmp; } #endregion

2015-08-26

微信公众平台 网页授权获取用户基本信息(.net)

微信公众平台 网页授权获取用户基本信息 //获取从wxProcess.aspx传递过来的跳转地址reurl if (Request.QueryString["reurl"] != null && Request.QueryString["reurl"] != "") { reurl = Request.QueryString["reurl"].ToString(); } string code = ""; if (Request.QueryString["code"] != null && Request.QueryString["code"] != "") { //获取微信回传的code code = Request.QueryString["code"].ToString(); OAuth_Token Model = Get_token(code); //获取token OAuthUser OAuthUser_Model = Get_UserInfo(Model.access_token, Model.openid ); if(OAuthUser_Model.openid!=null && OAuthUser_Model.openid !="") //已获取得openid及其他信息 { //在页面上输出用户信息 Response.Write("用户OPENID:" + OAuthUser_Model.openid + "<br>用户昵称:" + OAuthUser_Model.nickname + "<br>性别:" + OAuthUser_Model.sex + "<br>所在省:" + OAuthUser_Model.province + "<br>所在市:" + OAuthUser_Model.city + "<br>所在国家:" + OAuthUser_Model.country + "<br>头像地址:" + OAuthUser_Model.headimgurl + "<br>用户特权信息:" + OAuthUser_Model.privilege); //或跳转到自己的页面,想怎么处理就怎么处理 Response.Redirect(reurl); } }

2015-08-14

响应式设计css+兼容手机+平板+电脑PC 跨屏响应式布局前端开发CSS框架

响应式css+兼容手机+平板+电脑PC 拼图跨屏响应式布局前端开发CSS框架-综合示例

2015-05-06

css兼容手机、平板、PC各种分辨率的网站

css兼容手机、平板、PC各种分辨率的网站,css兼容pc+平板+手机范例

2015-05-06

C#-Net判断微信内置浏览器网页

C# 。Net判断微信内置浏览器网页,微信内置浏览器打开的网页

2015-04-23

winform+Ui+高仿彗星小助手

小助手Demo】高仿彗星小助手-2014.8.26更新

2015-03-25

移动开发html5通讯录上拉加载下拉刷新

移动开发html5通讯录上拉加载下拉刷新

2015-03-24

读取excel中的数据并存入SQL_Server数据库.rar

excel 显示Datagriew 读取excel中的数据并存入SQL_Server数据库.rar

2015-03-23

App Framework Explained

App FrameWork是基于HTML5重写的jQuery框架,对其进行了简化,更有利于在移动设备上应用,并且速度比较流畅。 App FrameWork框架页面基本都在同一个HTML文档中,在内容区(#content)里面放置多个class为"panel"的p, 这里每个p即为一个页面。当panel设置selected="true"属性后,在应用打开之后默认加载该页面,其他都是隐藏的(display:none)。这些页面之间通过锚链接来跳转,并将目标页面的display设置为"block",同时给需要隐藏的页面一个向左移动的动画,加之panel页面使用绝对定位,宽度高度均铺满content,这样的跳转就达到了native应用页面切换的效果。在页面切换时,另外的动作就是将panel页面中已经定义的title属性中的值显示到导航中,并可以设置属性data-tab的值来选中对应的标签。

2015-03-23

winform Excel读取数据到 DataGridView

winform Excel读取数据到 DataGridView byte[] content; FileStream fs = File.OpenRead(open.FileName); content = new byte[fs.Length]; fs.Read(content, 0, content.Length); fs.Close(); string fileExName = open.FileName; strPath = fileExName; string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileExName + ";" + "Extended Properties=Excel 8.0;"; OleDbConnection con = new OleDbConnection(strConn); con.Open(); string[] names = GetExcelSheetNames(con, ShiftCount);

2015-03-17

Android+Fragment+TabHost模仿新浪新闻布局界面

Android+Fragment+TabHost模仿新浪新闻布局界面

2015-03-09

【Android】时光轴效果.rar

这是安卓开发正在学习的同学不容错过的一个比较好的学习资源。希望能够实践的同学别错过。

2015-03-09

Swift仿Twitter的导航条和页面

Swift仿Twitter的导航条和页面,可以自定义页面数量。 // // PagingNavController.swift // SwiftPagingNav // // Created by Aubrey & Chad on 10/31/14. // Copyright (c) 2014 Aubrey Johnson / Chad Timmerman. All rights reserved. // import UIKit class PagingNavController: UIViewController, UIScrollViewDelegate { var scrollView:UIScrollView! var pageControl:UIPageControl! var navbarView:UIView! var navTitleLabel1:UILabel! var navTitleLabel2:UILabel! var navTitleLabel3:UILabel! var view1:UIView! var view2:UIView! var view3:UIView! override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = UIColor.lightGrayColor() //Creating some shorthand for these values var wBounds = self.view.bounds.width var hBounds = self.view.bounds.height // This houses all of the UIViews / content scrollView = UIScrollView() scrollView.backgroundColor = UIColor.clearColor() scrollView.frame = self.view.frame scrollView.pagingEnabled = true scrollView.showsHorizontalScrollIndicator = false scrollView.delegate = self scrollView.bounces = false self.view.addSubview(scrollView) self.scrollView.contentSize = CGSize(width: self.view.bounds.size.width * 3, height: hBounds/2) //Putting a subview in the navigationbar to hold the titles and page dots navbarView = UIView() self.navigationController?.navigationBar.addSubview(navbarView) //Paging control is added to a subview in the uinavigationcontroller pageControl = UIPageControl() pageControl.frame = CGRect(x: 0, y: 35, width: 0, height: 0) pageControl.backgroundColor = UIColor.whiteColor() pageControl.numberOfPages = 3 pageControl.currentPage = 0 pageControl.currentPageIndicatorTintColor = UIColor(red:0.325, green:0.667, blue:0.922, alpha: 1) pageControl.pageIndicatorTintColor = UIColor.whiteColor() self.navbarView.addSubview(pageControl) //Titles for the nav controller (also added to a subview in the uinavigationcontroller) //Setting size for the titles. FYI changing width will break the paging fades/movement var titleSize = CGRect(x: 0, y: 8, width: wBounds, height: 20) navTitleLabel1 = UILabel() navTitleLabel1.frame = titleSize navTitleLabel1.text = "Home" navTitleLabel1.textAlignment = NSTextAlignment.Center self.navbarView.addSubview(navTitleLabel1) navTitleLabel2 = UILabel() navTitleLabel2.frame = titleSize navTitleLabel2.text = "Discover" navTitleLabel2.textAlignment = NSTextAlignment.Center self.navbarView.addSubview(navTitleLabel2) navTitleLabel3 = UILabel() navTitleLabel3.frame = titleSize navTitleLabel3.text = "Activity" navTitleLabel3.textAlignment = NSTextAlignment.Center self.navbarView.addSubview(navTitleLabel3) //Views for the scrolling view //This is where the content of your views goes (or you can subclass these and add them to ScrollView) view1 = UIView() view1.backgroundColor = UIColor(red:0.325, green:0.667, blue:0.922, alpha: 1) view1.frame = CGRectMake(0, 0, wBounds, hBounds) self.scrollView.addSubview(view1) self.scrollView.bringSubviewToFront(view1) //Notice the x position increases per number of views view2 = UIView() view2.backgroundColor = UIColor(red:0.231, green:0.529, blue:0.757, alpha: 1) view2.frame = CGRectMake(wBounds, 0, wBounds, hBounds) self.scrollView.addSubview(view2) self.scrollView.bringSubviewToFront(view2) //Notice the x position increases yet again (wBounds * 2) view3 = UIView() view3.backgroundColor = UIColor(red:0.529, green:0.600, blue:0.647, alpha: 1) view3.frame = CGRectMake(wBounds * 2, 0, wBounds, hBounds) self.scrollView.addSubview(view3) self.scrollView.bringSubviewToFront(view3) } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() navbarView.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 44) } func scrollViewDidScroll(scrollView: UIScrollView) { var xOffset: CGFloat = scrollView.contentOffset.x //Setup some math to position the elements where we need them when the view is scrolled var wBounds = self.view.bounds.width var hBounds = self.view.bounds.height var widthOffset = wBounds / 100 var offsetPosition = 0 - xOffset/widthOffset //Apply the positioning values created above to the frame's position based on user's scroll navTitleLabel1.frame = CGRectMake(offsetPosition, 8, wBounds, 20) navTitleLabel2.frame = CGRectMake(offsetPosition + 100, 8, wBounds, 20) navTitleLabel3.frame = CGRectMake(offsetPosition + 200, 8, wBounds, 20) //Change the alpha values of the titles as they are scrolled navTitleLabel1.alpha = 1 - xOffset / wBounds if (xOffset <= wBounds) { navTitleLabel2.alpha = xOffset / wBounds } else { navTitleLabel2.alpha = 1 - (xOffset - wBounds) / wBounds } navTitleLabel3.alpha = (xOffset - wBounds) / wBounds } func scrollViewDidEndDecelerating(scrollView: UIScrollView) { var xOffset: CGFloat = scrollView.contentOffset.x //Change the pageControl dots depending on the page / offset values if (xOffset < 1.0) { pageControl.currentPage = 0 } else if (xOffset < self.view.bounds.width + 1) { pageControl.currentPage = 1 } else { pageControl.currentPage = 2 } } }

2015-03-09

swift编写简单的左右菜单栏

swift编写简单的左右菜单栏 // // MenuViewController.swift // Menu // // Created by innovane on 14-6-23. // Copyright (c) 2014年 innovane. All rights reserved. // import UIKit let kICSDrawerControllerLeftViewInitialOffset : CGFloat = 60.0 let kICSDrawerControllerDrawerDepth : CGFloat = 200.0 enum ICSDrawerControllerState : Int { case MenuControllerStateOpening case MenuControllerStateClosing } class MenuViewController: UIViewController { //用户点击center var tapGestureRecognizer : UITapGestureRecognizer! // 用户拖动视图 var panGestureRecognizer : UIPanGestureRecognizer! // 用户touch的点位置 var panGestureStartLocation : CGPoint! // 左边控制器 var leftViewController : UIViewController! //中间控制器 var centerViewController : UIViewController! var drawerState : ICSDrawerControllerState! init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) // Custom initialization } override func viewDidLoad() { super.viewDidLoad() self.drawerState = ICSDrawerControllerState.MenuControllerStateClosing; } override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) // 将左边控制器加入导航栏中。 if self.leftViewController != nil{ if (self.leftViewController.view.superview == nil){ self.addChildViewController(self.leftViewController) self.view.insertSubview(self.leftViewController.view, atIndex:0) } } if self.centerViewController != nil{ if (self.centerViewController.view.superview == nil){ self.addChildViewController(self.centerViewController) self.view.addSubview(self.centerViewController.view) } } // 添加用户拖动事件。 self.panGestureRecognizer = UIPanGestureRecognizer() self.panGestureRecognizer.addTarget(self,action:"panGestureRecognized:"); self.centerViewController.view.addGestureRecognizer(self.panGestureRecognizer) } // 用户拖动视图调用代理方法。 func panGestureRecognized(panGestureRecognizer:UIPanGestureRecognizer){ // 用户对视图操控的状态。 var state = panGestureRecognizer.state; var location = panGestureRecognizer.locationInView(self.view) var velocity = panGestureRecognizer.velocityInView(self.view) switch (state) { case UIGestureRecognizerState.Began: // 记录用户开始点击的位置 self.panGestureStartLocation = location; println("Began") break; case UIGestureRecognizerState.Changed: println("Changed") var c = self.centerViewController.view.frame if (panGestureRecognizer.translationInView(self.centerViewController.view).x > 0){ if (self.drawerState == ICSDrawerControllerState.MenuControllerStateClosing){ c.origin.x = location.x - self.panGestureStartLocation.x; } }else if (panGestureRecognizer.translationInView(self.centerViewController.view).x > -kICSDrawerControllerDrawerDepth){ if (self.drawerState == ICSDrawerControllerState.MenuControllerStateOpening){ c.origin.x = panGestureRecognizer.translationInView(self.centerViewController.view).x+kICSDrawerControllerDrawerDepth } } self.centerViewController.view.frame = c ; break; case UIGestureRecognizerState.Ended: var c = self.centerViewController.view.frame // 表示用户需要展开 if (location.x - self.panGestureStartLocation.x > kICSDrawerControllerLeftViewInitialOffset){ self.didOpen() }else{ if (c.origin.x < (kICSDrawerControllerDrawerDepth - 40)){ self.didClose() }else{ self.didOpen() } } break; default: break; } } // 移除点击事件,添加拖动事件 func tapGestureRecognized(tapGestureRecognizer : UITapGestureRecognizer){ self.didClose(); } // 菜单栏打开 func didOpen(){ var c = self.centerViewController.view.frame c.origin.x = kICSDrawerControllerDrawerDepth; UIView.animateWithDuration(0.7,delay:0,usingSpringWithDamping:0.5,initialSpringVelocity:1.0,options:UIViewAnimationOptions.AllowUserInteraction,animations:{ self.centerViewController.view.frame = c ; },completion: { (finished: Bool) -> Void in }) self.drawerState = ICSDrawerControllerState.MenuControllerStateOpening //增加点击事件 if (self.tapGestureRecognizer == nil){ self.tapGestureRecognizer = UITapGestureRecognizer() self.tapGestureRecognizer.addTarget(self,action:"tapGestureRecognized:"); } self.centerViewController.view.addGestureRecognizer(self.tapGestureRecognizer) } // 菜单关闭 func didClose(){ if (self.drawerState == ICSDrawerControllerState.MenuControllerStateOpening){ self.drawerState = ICSDrawerControllerState.MenuControllerStateClosing self.centerViewController.view.removeGestureRecognizer(self.tapGestureRecognizer) } var c = self.centerViewController.view.frame c.origin.x = 0 UIView.animateWithDuration(0.5,delay:0,usingSpringWithDamping:0.9,initialSpringVelocity:1.0,options:UIViewAnimationOptions.AllowUserInteraction,animations:{ self.centerViewController.view.frame = c ; },completion: { (finished: Bool) -> Void in }) } }

2015-03-09

Android仿qq播放器.rar

Android仿qq播放器的代码,经过测试是一个不错的代码

2015-02-27

Android抢红包源码

Android抢红包源码。是一个很不错的代码

2015-02-27

Android调用webService显示地区

Android调用webService显示地区.能显示全国各个地区。访问WebService的工具类

2015-01-13

android手势滑动引导界面

android手势滑动引导界面.一个开机引导画面。类似微信第一次进入。

2015-01-13

Android播放器后台运行代码notification

Android播放器后台运行代码notification

2015-01-05

[安卓开源]高仿人人网客户端

[安卓开源]高仿人人网客户端.android 代码

2014-12-30

vue-element-admin-master.zip

vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现。它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。相信不管你的需求是什么,本项目都能帮助到你。

2020-06-30

vue-jwt-demo-master.zip

vue通过jwt认证。import Vue from 'vue' import App from './App.vue' import Login from './component/Login.vue' import Home from './component/Home.vue' import VueRouter from 'vue-router' import VueResource from 'vue-resource' import auth from './auth/auth' Vue.use(VueRouter) Vue.use(VueResource) //在启动APP时进行校验是否有token auth.checkAuth() const routes= [ { path:'/',redirect:'/login' }, { path:'/login',component:Login }, { path:'/home',component:Home } ] const router = new VueRouter({ routes }) new Vue({ router, render: h => h(App) }).$mount('#app')

2020-06-30

vue-wechat-login-master.zip

vue微信授权登录,new Vue({ router, store, render: h => h(App) }).$mount('#app')

2020-06-30

js显示屏特效火车站高铁站列车时刻表切换特效.rar

显示屏特效火车站高铁站列车时刻表切换特效, 模拟数据库读取列车时刻表数据。然后随机在页面显示滚动结果

2020-04-12

HTML和CSS3制作的可编辑的微软Word样式文档

HTML和CSS3制作的可编辑的微软Word样式文档。该特效提供一组预定义的样式,用于在WEB页面中生成各种尺寸的Word样式的文档效果。它提供的样式包括: sheets-of-paper-a4.css:A4纸(21cm × 29.7cm) sheets-of-paper-a3.css:A3纸(29.7cm × 42cm) sheets-of-paper-usletter.css:US letter(21.6cm × 27.9cm) sheets-of-paper-uslegal.css:US legal(21.6cm × 35.6cm) sheets-of-paper-ustabloid.css:US tabloid(27.9cm × 43.2cm)

2020-04-09

百度地图聚合显示.zip

百度地图地区聚合显示房产数据。数据量较少,所以不是每一个区下面都有数据,只模拟造了少量数据,并且能显示所有行政边界。

2019-11-20

c# 文字转为拼音或者拼音首字母类TChinese

string result = TChinese.MakeSpellCode(strChinese, TChineseOptions.FirstLetterOnly); string result = TChinese.MakeSpellCode(strChinese, TChineseOptions.EnableUnicodeLetter);

2019-05-28

微信小程序 模仿coco的微信点餐系统

微信小程序

2018-01-13

dropload 下拉刷新 上拉加载 jquery 控件

domUp : { // 上方DOM domClass : 'dropload-up', domRefresh : '<div class="dropload-refresh">↓下拉刷新</div>', domUpdate : '<div class="dropload-update">↑释放更新</div>', domLoad : '<div class="dropload-load"><span class="loading"></span>加载中...</div>' }, domDown : { // 下方DOM domClass : 'dropload-down', domRefresh : '<div class="dropload-refresh">↑上拉加载更多</div>', domLoad : '<div class="dropload-load"><span class="loading"></span>加载中...</div>', domNoData : '<div class="dropload-noData">暂无数据</div>' },

2017-09-26

快速排序Quicksort演示

日本程序员norahiko,写了一个排序算法的动画演示,非常有趣。排序算法(Sorting algorithm)是计算机科学最古老、最基本的课题之一。要想成为合格的程序员,就必须理解和掌握各种排序算法。 目前,最常见的排序算法大概有七八种,其中"快速排序"(Quicksort)使用得最广泛,速度也较快。它是图灵奖得主C. A. R. Hoare(1934--)于1960时提出来的

2017-09-11

fullcalendar-1.6.4-feifei修改版

fullcalendar-1.6.4-feifei修改版

2017-08-21

weui 时间控件含全天 上午 下午 选择

weui 时间控件含全天 上午 下午 选择

2017-08-09

高仿微信企业号 基础应用审批样式weui

高仿微信企业号 基础应用审批样式weui

2017-08-08

winform DockPanel框架

DockPanel Suite是一个国外 winform框架开源项目

2017-06-02

微信小程序 购物车UI

医疗服务顾客满意度测评管理 原价45元 ¥41.00

2017-05-25

net-jquery-cookie 购物车 以及Cookie 存储示例

function storecookie(value){ $.cookie('name',value,{expires:1}); } function showcookie(name){ var cookieValue = $.cookie(name); $("#tvalue").val(cookieValue); } function deletecookie(name){ $.cookie(name,null); } function setDatecookie(date){ $.cookie('name','admin',{expires:date}); }

2017-05-25

NET DotNetZip 多文件压缩打包组件

在对多文件打包中用到了 DotNetZip 的方法来实现对多文件压缩打包,下载该文件,然后引用即可。

2017-02-17

PHP微信支付接口开发代码

PHP微信支付接口开发代码 <script type="text/javascript"> //调用微信JS api 支付 function jsApiCall() { WeixinJSBridge.invoke( "getBrandWCPayRequest", '.$jsApiParameters.', function(res){ //alert(res.err_msg); //WeixinJSBridge.log(res.err_msg); location.href = "http://www.xxx.com/wap/tmpl/member/order_list.html"; } ); } function callpay() { if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener("WeixinJSBridgeReady", jsApiCall, false); }else if (document.attachEvent){ document.attachEvent("WeixinJSBridgeReady", jsApiCall); document.attachEvent("onWeixinJSBridgeReady", jsApiCall); } }else{ jsApiCall(); } } callpay(); </script>

2016-03-06

iOS 新闻系统源代码

iOS 新闻系统源代码 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"city"]; if (cell == nil) { cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"city"]; } CityItems *item = [_dataArray objectAtIndex:indexPath.row]; cell.textLabel.text = item.name; cell.textLabel.textColor = [UIColor whiteColor]; return cell; } -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ if ([self.delegate respondsToSelector:@selector(didSelectRow:andCityZip:)]){ CityItems *item = [_dataArray objectAtIndex:indexPath.row]; [self.delegate didSelectRow:self andCityZip:item.zip]; } }

2015-12-13

2004-2012网络工程师试题

2004-2012网络工程师试题

2015-09-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除