自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

书写人生

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

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

转载 Android Things 物联网应用开发初体验

Android Things 是 Google 最近推出的全新物联网操作系统,前身是去年发布的物联网平台 Brillo,除了继承 Brillo 的功能,还加入了 Android Studio、Android SDK、Google Play 服务以及 Google 云平台等 Android 开发者熟悉的工具和服务。任何 Android 开发者现在都可以利用 Android API 和 Google

2017-05-29 17:06:28 12610

转载 微信小程序 开发列表

一.知识点(一).列表渲染 wx:fortip:wx:for=“array”可以等于参数名,在js中调用Page({ data:{array: [{name: '小李'},{ name: '小高'}]} }),获取值;也可以直接把wx:for="{{[1, 2, 3]}}",把值放在上面1.在组件上使用wx:for控制

2017-05-22 11:45:29 18180 3

转载 微信小程序支付功能 C# .NET开发

微信小程序支付功能的开发的时候坑比较多,不过对于钱的事谨慎也是好事。网上关于小程序支付的实例很多,但是大多多少有些问题,C#开发的更少。此篇文档的目的是讲开发过程中遇到的问题做一个备注,也方便其他开发的同学作为参考!       1、首先建议把官方文档支付部分看上三遍,每个细节都不要放过,因为任何一个点和微信要求不符都会导致支付不成功。https://pay.weixin.qq

2017-05-22 11:42:38 9319

转载 微信小程序之购物车

登录成功、付款成功,而且还拥有了自己的一辆车:购物车也发现了自己的不足之处:余额不足。为大家介绍的就是购物车这里演示从商品列表中添加到购物车下面先做商品列表页。如下图:布局分析:首先一个list的主盒子,接着是item盒子,这是必须的。      然后把item分成左侧的图片部分,和右侧的说

2017-05-22 11:40:24 9792 7

转载 微信小程序swiper滑动页面实践-类似于安卓ViewPager

一言不合,上效果效果一 效果二 效果三 效果四 基本属性属性名 类型 默认值 说明 最低版本 indicator-dots Boolean false 是否显示面板指示点 indicator-color Color rgba(0, 0, 0, .3) 指示点颜色 1.1.0 indicator-active-color C

2017-05-22 11:38:00 2046 2

转载 Kotlin初探

示例源码传送门前言Kotlin是一种在 Java虚拟机上执行的静态型别编程语言,它主要是由俄罗斯圣彼得堡的JetBrains开发团队所发展出来的编程语言。该语言有几个优势 1. 简洁 它大大减少你需要写的样板代码的数量。 2. 安全 避免空指针异常等整个类的错误。 3. 通用 构建服务器端程序、Android 应用程序或者在浏览器中运行的前端程序。 4. 互

2017-05-19 15:28:36 777

原创 Android Studio配置Kotlin开发环境

新的产品开发中Android端已经完全使用Kotlin作为开发语言了,目前为止还没有发现什么不适的地方。所以今天我们将讲解一下如何在Android Studio中配置Kotlin开发环境,算是为Kotlin讲解一下入门知识,后续会慢慢更新kotlin相关知识。什么是Kotlin?这里暂时引用一下百度百科中对Kotlin的讲解:Kotlin 是一个基于 JVM 的新的

2017-05-19 15:19:57 4051

转载 微信小程序 view的文本不能自动换行问题

今天碰到了个问题,view并不能让文本自动换行 看看官方定义的view组件,原本的view定义的display为block。 之前忘了在哪里看到小程序布局的时候用flex,所以涉及到了css3的display:flex。 具体学习,看阮一峰老师的教程看这次出现的问题,是文字太长被吃掉了,截图: 依靠我多年的开发经验,试倒是被我试出来了,整理了一下思路,一般出现滚轴(在图片或

2017-05-19 14:19:17 22496

转载 微信小程序 image组件的mode属性 以及 图片出现横向滚动轴

微信官方开发文档的截图可以看到,image这个组件有四个属性,这次针对mode属性和我所做的小程序中用到的图片结合讲一下。按照官方的mode,分为两类:一类缩放,一类裁剪。我所做的pixiv是需要大量图片的网站。P站供画手们上传自己的作品。图片有大有小,按照这个,我们要做的可以分成两种1、对上传上来的图片进行缩放(一般是缩小),放进我们规定好大小的格子中

2017-05-19 14:16:26 4065

转载 微信小程序滑动删除效果

最初打算使用scroll-view实现,效果好、流畅、有惯性滑动,但由于滚动条没法去掉、无法实现上下层的帧布局,最终放弃了。还是自己写个吧,利用手势事件。遗憾的是小程序中目前没有像Android中快速滑动事件,所以,要实现惯性滑动是不可能了。item的布局:推荐小程序优先使用flex布局,完全够用。这也是微信推荐的

2017-05-19 11:11:33 1639

转载 微信小程序横向左右滑动案例

图片左右滑动效果效果图:wxml代码:[html] view plain copy print?scroll-view scroll-x="true">  view class="uploadWrap" scroll-x="true">    view class="up

2017-05-19 11:08:53 9073

转载 微信小程序锚点定位楼层跳跃

微信小程序实现楼层锚点跳跃,点击不同的锚点进行位置跳跃:利用:scroll-into-view 来实现效果图如下:WXML:[html] view plain copy print?scroll-view class="content" scroll-into-view="{{toV

2017-05-19 11:04:54 5351

转载 微信小程序表单验证错误提示

表单验证 点击确认发布不能为空错误提示以下是效果图:代码如下:WXML:[html] view plain copy print?view class="ad_popError" wx:if="{{popErrorMsg}}">{{popErrorMsg}}view>  view class="ad_p

2017-05-19 11:03:34 3093

原创 微信小程序 wx.request 出现 Failed to load resource: the server responded with a status of 400

首先说遇到的问题index.js[javascript] view plain copyvar API_URL = 'https://api.douban.com/v2/movie/top250';  Page({    data: {      movies: []    },    onLoad: functi

2017-05-19 10:36:42 8335

原创 微信小程序 input 的 type属性 text、number、idcard、digit 区别

微信小程序的 input 有个属性叫 type,这个 type 有几个可选值:text:不必解释number:数字键盘(无小数点)idcard:数字键盘(无小数点、有个 X 键)digit:数字键盘(有小数点)注意:number 是无小数点的,digit 是有小数点的

2017-05-19 10:31:53 45203 1

原创 微信小程序 wx:if 与 hidden区别

条件渲染 顾名思义所谓的条件渲染,就是通过条件来判断是否需要渲染该代码块。条件渲染主要是用到wx:if 和 block wx:if 这两个,第一个相信好理解,第二个是在block里面进行条件渲染,这里我们特别说明一下并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。和我们以前的逻辑编程类似,既然有了wx:if ,那么我们也会有wx:elseif和wx.else,这几

2017-05-19 10:29:06 21488

原创 微信小程序 fixed 解决 textarea 的 placeholder 不固定问题

当我们把 textarea 放到一个 position:fixed; 中的元素中时。会发现这个 textarea 也会跟着固定位置,但是 textarea 的 placeholder 内容不会固定,当滚动页面时,placeholder 的内容会跟着滚动。如何解决呢?给 textarea 增加属性 fixed:

2017-05-19 10:25:42 11808 1

原创 微信小程序-wx:for 循环列表

获取了 N 条信息(具体有多少条不确定),如何在界面中动态呈现出来呢?.wxml 代码 wx:for="{{items}}" wx:for-index="index" wx:for-item="item">{{index+1}}、{{item.title}}>核心代码就是 wx:for,对应一个数组。而 wx:for-index 指明后面如果要用数组索引的话

2017-05-19 10:23:01 110710 8

原创 微信小程序 wx:key 高级列表循环

让我们先看看代码.wxml 代码 wx:for="{{items}}">  > />{{item.title}}>> bindtap="chng">变更项>.js 代码  data: {    items: [{  id: 1,  title: "a"},{  id: 2,  title: "b",},{  i

2017-05-19 10:21:08 43670 1

转载 微信小程序 View:flex 布局

微信小程序 View 支持两种布局方式:Block 和 Flex所有 View 默认都是 block要使用 flex 布局的话需要显式的声明:display:flex; 下面就来介绍下微信小程序的 Flex 布局先做一个简单的 demo view class="main"> view class="item item1">1vi

2017-05-18 16:59:06 770

原创 微信小程序 通过控制CSS实现view隐藏与显示

视图代码,使用变量控制隐藏类名      为了更好地帮助您解决问题,请准确填写您的邮箱地址和电话号码,以便管理员给你答复。                希望回访:                                                                          您的姓名:

2017-05-18 16:28:23 8815 2

原创 微信小程序 不同的移动设备上应该如何设置rpx单位?

我们在做微信小程序的开发时,经常会遇到在写样式表的时候发现用PX的效果不太理想的情况。日常开发中,我们常用rem、em来做响应式布局的像素单位,他们都是相对单位。rem相对于文档的根元素,em相对于父元素。但是在微信小程序的官方文档用rpx来做响应式布局单位!那什么是RPX,应该如何设置呢?今天我们就来好好了解一下。[color=rgb(44,]rpx(responsive p

2017-05-18 16:10:12 18890 1

原创 微信小程序-消息提示框

.微信小程序开发中toast也是重要的消息提示方式.提示框:wx.showToast(OBJECT)显示消息提示框OBJECT参数说明:示例代码:?12345wx.showToast({ title:'成功', icon:'success', duration: 2000})

2017-05-16 15:17:14 13580

转载 微信小程序: WebSocket应用

WebSocket是什么(简述)微信的WebSocket接口和HTML5的WebSocket基本一样,是HTTP协议升级来的,做为一个新的Socket在B/S上使用,它实现了浏览器与服务器全双工通信。因为这里是做小程序,所以就不对WebSocket的底层和协议做过多的说明了,只是稍微介绍一下。想了解详细的WebSocket可以参考如下:WebSocket 协议

2017-05-16 15:04:35 1925

转载 微信小程序的条件、遍历、网络请求、获取本地图片

实例一: 条件渲染如果motto为Hello World,则输出你好世界,否则原样输出。这里是分支条件判断,直接在视图文件里修改,修改index.wxml{{motto}}你好世界wx:if、wx:else、wx:elif,是微信条件判断的控制属性,需要添加到组件中使用。但是如果我们想一次性判断多个组件标签,我们可以使用一个标签将多个组件

2017-05-16 15:02:16 3136

原创 微信小程序例子——获取手机网络状态

手机网络状态:{{netWorkType}}Page({ data: { netWorkType:'' }, onLoad: function () { var that=this wx.getNetworkType({ success: function(res) { that.setData({

2017-05-16 14:57:23 1894

转载 微信小程序之数据传递

本文主要介绍,页面跳转间的数据传递。传递的数据类型主要有1,基本数据类型;2,对象;3,数组集合;先告诉你,本质上都是string类型传递。但是对于对象和数组集合的传递需要小小的处理一下传递时的数据和接收后的数据。1,传递基本数据类型index.js 发送页JS[javascript] view plain copy print?

2017-05-13 09:28:52 1437

转载 微信小程序传值以及获取值方法

微信小程序传值以及获取值方法,传值有两种方法,对应也有获取值得方法,1、设置id的方法标识跳转后传递的参数值;2、通过使用data - xxxx 的方法来标识要传递的值微信小程序设置id的方法标识来传值在要跳转的item处,设置一个id并给当前的id赋值上对应的key值,比如一部电影的id(后面带着id去下一个页面查询,详细信息)如:

2017-05-13 09:25:42 5594 1

转载 微信小程序 实现获取当前位置并在地图上显示

配置app.json文件所要加载的页面//app.json{ "pages":[ "pages/index/index" ], "window":{ "backgroundTextStyle":"light", "navigationBarBackgroundColor": "#10DDC2", "navigationBarTitleText":

2017-05-12 21:44:07 22148 2

转载 微信小程序之用户数据解密

【未经作者本人同意,请勿以任何形式转载】经常看到有点的小伙伴在群里问小程序用户数据解密流程,所以打算写一篇关于小程序用户敏感数据解密教程;加密过程微信服务器完成,解密过程在小程序和自身服务器完成,即由 encryptData 得到如下数据:{ "openId": "OPENID", "nickName": "NICKNAME", "gender": GEND

2017-05-12 21:35:24 1532

转载 微信小程序 简单动画入门

一、什么是微信小程序?  小程序在我的理解中只是高度封装的H5,封装了各种组件。根据官方的说法小程序运行不是在浏览器当中。姑且算是微信的插件吧。二、小程序不能操纵DOM  小程序不能直接操纵DOM,鼓励的是数据绑定。例如vue.js这种。所以个人而言感觉跟如果习惯了用JQ去操纵DOM的开发者很不习惯。需要一个习惯的过程。三、小程序不能引用JQ  小程序虽然可

2017-05-12 21:33:34 6095

转载 微信小程序 获取用户信息并保存登录状态

前言、  微信小程序的运行环境不是在浏览器下运行的。所以不能以cookie来维护登录态。下面我就来说说我根据官方给出的方法来写出的维护登录态的方法吧。一、登录态维护官方的文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject  通过 wx.login() 获取到用

2017-05-12 21:29:41 104066 5

转载 微信小程序页面跳转传递值

微信小程序导航有两种形式:一种是在写在js中进行跳转,另一种是写在wxml页面中进行跳转。1、js导航 (1)、wx.navigateTo(OBJECT) :保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。[javascript] view plain copy wx.na

2017-05-12 21:24:34 1962

转载 微信小程序获取用户openid

1、wx.login(OBJECT)   调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)。用户数据的加解密通讯需要依赖会话密钥完成。2、code 换取 session_key​  这是一个 HTTPS 接口,开发者服务器使用登录凭证 code 获取 session_key 和 op

2017-05-12 21:20:48 6365

转载 微信小程序 三元运算符 条件语句if和循环语句for(三目运算+hidden)

在微信小程序的官方文档中,将这两个语句归化在框架的视图层,分表叫条件渲染和类表渲染,其实他就是封装了这两条语句而已。上图(循环语句if) 1.它是通过在index.js中设置数据,然后再index.wxml中进行判断,首先上index.wxml的代码。//微信是封装过if语句的,你只要在index.js中设置好值,然后就可以直接想这样拿来判断了,还有这是class=“vie

2017-05-12 17:39:18 10669

转载 微信小程序 生命周期详解

这篇文章主要介绍了微信小程序 生命周期的相关资料,创建、到开始、暂停、唤起、停止、卸载等过程,需要的朋友可以参考下微信小程序 生命周期通俗的讲,生命周期就是指一个对象的生老病死。 从软件的角度来看,生命周期指程序从创建、到开始、暂停、唤起、停止、卸载的过程。下面从一下三个方面介绍微信小程序的生命周期:应用生命周期页面生命周期应用生命周期影响页面生命周期》》》应用生命周期

2017-05-12 15:09:01 1705

转载 微信小程序入门六本地缓存和搜索

上一章介绍了上拉加载下拉刷新的功能 这章谈谈搜索和本地缓存。主要功能有,点击搜索显示搜索输入框同时显示搜索历史记录,点击右侧搜索按钮搜索数据同时保存到搜索历史记录中,清除历史记录等功能。效果图:先介绍搜索的功能:第一步,做一个搜索的输入框,可以利用weui-wxss框架中searchbar。没有weui-wxss 可以在 https://github.com/w

2017-05-12 15:05:18 762

转载 微信小程序入门七登录注册

上一章介绍了 微信小程序入门六本地缓存和搜索 ,这章介绍小程序的登录注册页面。主要有表单的验证,错误信息的提示,form表单的取值,get / post 请求 ,反馈交互提示框,页面跳转 以及 页面UI。效果图:注册页面:基本内容有账号,密码,确认密码,也可以添加 是否同意条款 wxml源码:1. 顶部提示错误信息2. 输入内容长

2017-05-12 15:03:46 9026

转载 微信小程序入门八头像上传

上一章介绍了微信小程序入门七登录注册,这章谈谈头像的选择,上传,预览以及后台服务端代码的功能。本章节主要用的知识点有1. action-sheet 底部弹出可选菜单组件2. wx.uploadFile 将本地资源上传到服务器3. wx.chooseImage 从本地相册选择图片或使用相机拍照。4. wx.previewImage 预览图片效果图:

2017-05-12 15:01:23 1577

转载 微信小程序『侧边栏滑动』特效

侧边栏滑动是很常见的功能,但是小程序出来不久,很多特效还没有成熟案例,只能原生重写,所以今天为大家带来4个漂亮的侧边栏特效~~侧边栏特效一先看效果:点击按钮侧边滑动wxml:[html] view plain copy  view class="page">      view class="p

2017-05-12 14:58:13 1145

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关注的人

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