本文介绍了一个基于CocoaAsyncSocket框架实现的TCP功能,可以实现TCP相关的功能,包括发送和接收TCP包,以及TCP的连接管理。同时,还介绍了如何使用该功能实现TCP的客户端和服务器。
如果想给已经封装好的类添加方法 比如给UIButton添加一个异步下载图片的方法可以使用分类。比如我们要增加的方法需要实例变量很多 里面要用到很多的实例变量来执行逻辑 那么我们做好的选择是选择继承
Swift 可以利用 OC 的 runtime 和 KVC ,在运行时向一个对象添加值存储,这种方式称之为Associated Object。在使用 extension 扩展现有类的功能时,使用Associated Object的方式,可以将一个值 “关联” 到已有的要扩展的类上。该知识点在 iOS 开发中使用往往能优雅地解决很多问题。
5. UIView的操作方法 1)添加视图 UIView的addSubview:方法可以添加子视图,对于同一个视图的所有子视图来讲,后添加的子视图会把已加的子视图盖在下面。 UIView提供了其他添加视图的方法(详见下表):
什么是常量和变量 在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量 使用let来定义常量,定义之后不可以修改 使用var来定义变量,定义之后可以修改 变量的基本使用 import UIKit let a : Int = 10 //报错——当一个字段定义为常量时是不可以修改的 // a = 20 var b : Int = 20 // 因为b定义为变量,因此是可以修改的 b = 30 常量和变量的使用注意: 注意: 在真正的开发过程中,建议先定义常量,如果需要修改再修改为变量(
made in 小蠢驴的封面 背景:目前的iOS环境,相信大部分的人都还是做的业务开发,一个好的工具类,可以极大的提供开发效率,简化繁琐的设置步骤。接下来,简单介绍一个我在实际开发中抽取出来的工具类 - MNKit MNButton 业务开发中,UIButton控件应该算最常用的控件之一了,而且它的属性设置还贼麻烦,很多个都是要用 [ set XXX];方法去设置,设置事件(比如点击事件)还要传多个参数- (void)addTarget:(nullable id)target action:(SEL)
自从block出现之后,很多API都开始采用这样的结构,由此可见,block确实有许多优势存在,这里将一些简单用法总结如下:
CATransition继承自CAAnimation, 所以用法跟CAAnimation差不多
分类(category)与关联对象(Associated Object)作为objective-c的扩展机制的两个特性:分类,可以通过它来扩展方法;Associated Object,可以通过它来扩展属性;
iOS系统已经迎来了10.3.2版本,iOS软件开发发展至今已经相当成熟了。布局的方式从frame、size、center到如今强大的autolayout,将UI布局尽量的“自动化”和“智能化”,在很大程度上减少了程序员的工作量。
UINavigationBar是一个我们在开发中必定会碰到的控件,用好它能帮助我们自定义导航栏的样式,所以今天讲解一下UINavigationBar的用法。
LaunchScreen.storyboard 界面 : 该界面不是用于展示应用程序的界面 ;
在这里我以UIButton为例子给大家展示一种实现方法,主要依靠runtime实现。废话不说上码... 1.扩展一般属性NSString @interface UIButton (CJButtonType) @property (nonatomic, strong) NSString *typeString; @end /////////////////////////////////////////////// #import "UIButton+CJButtonType.h" #import <objc
UIButton的用处特别多,这里只记录下把按钮应用在图文显示的场景,和需要把图片作为按钮的背景图片显示场景;
ReactiveCocoa网上资料很多,今天就介绍一下ReactiveCocoa简单的用法。
UIButton的初始化一般使用其类方法,+ (id)buttonWithType:(UIButtonType)buttonType;
2、初始化并默认一个选项,这里用了4个button,实际可以采用2个,因为写一半才发现后面的汉字也要设置成可点的,就懒得改了,直接改成button了
//需要导入框架QuartzCore.framework,并且在当前类中引用#import
开发前:设定开发计划、步骤开发过程中:每一个步骤告一段落之后,我们要暂停,进行代码审核,有针对性的重构(抽离重复代码,模型和视图各尽职责)
//按钮初始化类方法 UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];//这里创建一个圆角矩形的按钮 //按钮初始化实例方法 UIButton *button1=[[UIButton alloc]initWithFrame:CGRectMake(50, 300, 200, 50)]; //能够定义的button类型有以下6种, // typedef enum { // UIButtonTypeCustom
项目介绍:首先上边显示的是透明的视图,透明度为0.8 这是一个vc 设置vc的view的背景颜色为clearcolor 上边是一个按钮,设置按钮的透明度为0.8 背景为黑色 下边是一个btn 用来做点击事件。 代码附上: - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor yellowColor]; UIButton *btn = [[UIButton all
主要实现通过runtime动态关联属性。 上码!!!! #import <UIKit/UIKit.h> typedef void(^ButtonBlock)(UIButton* btn); @interface UIButton (Block) /** * button 添加点击事件 * * @param block */ - (void)addAction:(ButtonBlock)block; /** * button 添加事件 * * @param block *
举个例子理解一下 如果你想统计App中所有页面的点击事件,最简单快捷的方式是什么? extension UIButton{ class func swip(){ // 创建一个结构体,写个静态变量 struct T{ static let x:Bool = { let cls: AnyClass = UIButton.self // 创建消息对象 let originalSelector =
UIButton一般分为高亮的普通两种状态,原生的方法可以设置这两种不同状态下的文字颜色,文字内容,背景图片,按钮图片。但是不能设置按钮的背景色。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116488.html原文链接:https://javaforall.cn
code4App有很多伟大的上方UI特效代码,,好牛逼啊,这效果,太炫了,哇,怎么自己写不出来.事实上,再炫的特效,都是依据苹果系统的框架而来,假设我们了解系统框架实现的原理,也就能写出属于自己自己定义的控件,加上各种各样的动画.
由于编码的时候大多数时候使用Xib,但是偶尔利用纯代码创建控件的时候,觉得很麻烦,很多属性需要设置,于是在Git上搜索一个开源库FuncControl 觉得还可以,如果您有好用一点的开源库也请分享一下!
NSTimer在IOS开发中会经常用到,尤其是小型游戏,然而对于初学者时常会注意不到其中的内存释放问题,将其基本用法总结如下:
Method Swizzing是发生在运行时的,主要用于在运行时将两个Method进行交换,我们可以将Method Swizzling代码写到任何地方,但是只有在这段Method Swilzzling代码执行完毕之后互换才起作用。
首先创建一个类,继承自UItabBarController 然后在.m文件中:
在项目中经常会遇到一个按钮上放一个图片 位置有可能会是在标题的上,下,左,右 如果一个按钮,可以单独设置titleEdgeInsets和imageEdgeInsets即可,但是如果有很多 类似的按钮但是设置就很麻烦。为了解决这个问题 我们写一个UIButton的Category
iPhone拥有很好的用户交互体验,这源于iOS系统对交互事件的高效处理和高优响应; App开发者处理用户交互非常便捷,这源于iOS系统和UIKit对用户操作做了封装和默认处理; 本文围绕iOS的事件传递和处理,探究其具体过程。
首先打开 Xcode 新建一个 Cocoa Touch 项目,interface 选择 Storyboard。
在category中的使用 @property添加属性 ,不会生成带下划线的成员变量,也不会有setter和getter方法实现,所以我们通过runtime关联对象的技术为已经存在的类添加“属性”,这样我们只是实现了setter和getter方法,依然不会有带下划线的成员变量
这次支付宝手机客户端升级,把手势解锁那个功能去掉了,引起很多人的抱怨,觉得少了手势解锁的保护,个人信息容易泄漏了。。。
因为系统是没有方式可以获取到 Done 按钮的,我们运用运行时倒是可以获取到这个按钮。
废话不多说代码见真章!!! #import <UIKit/UIKit.h> @interface UIButton (MutableTitle) /** * 根据添加的title 改变 button 的长度 * * @param text */ - (void)setMutableTitleWithString:(NSString *)text textFont:(UIFont *)textFont forState:(UIControlState)UIControlState; @end
iOS8系统的开放第三方键盘,使得用户在输入法的选择上更加自主灵活,也更加贴近不同语言的输入风格。这篇博客,将介绍如何开发一个第三方的键盘控件。
昨天在上线的时候遇到了一个坑,最后导致的结果是找了好几个小时,直接到半夜才能上线。
我们新建一个NewViewController,在开始的ViewController写如下代码
如下图所示:自定义PersonalCenterView,如何在controller拿到按钮(小箭头)的点击方法?
在多个不同的运算符同时存在的时候应该合理使用括号,不要盲目依赖操作符优先级。 因为有的时候不能保证阅读你代码的人就一定能了解你写的算式里面所有操作符的优先级。
步骤: 1.打开Xcode,单机Creat a new Xcode project 2.左边选择ios下Application,右边选择single view Application 3.填写项目名称单机Next 4.ViewController.h中定义成员和方法 // // ViewController.h // TestCalculator4 // // Created by heyonggang on 13-11-28. // Copyright (c) 2013年 MiracleHe. A
根据textfield的内容显示不同button的图像 image.png import UIKit class ViewController:UIViewController,UITextFiel
代码安全与密码 ios-class-guard - 一个用于混淆iOS的类名,方法名以及变量名的开源库 - 有人反映编译出来的app运行不了。 “保护iOS应用程序”:文章系统地介绍了如何保护iOS程序的代码安全,防止反汇编分析。 fishhook - fishhook是Facebook开源的一个可以hook系统方法的工具。 GesturePassword - 一个iOS手势密码功能实现,iPad / iPhone都可以用,没有使用图片,里面可以通过查看自己添加.keychain做的数据持久化
Symbol Animations 新特性使得按钮中使用的 SF Symbols 图标也可以呈现动画。
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
在iOS开发过程中,页面跳转时在页面之间进行数据传递是很常见的事情,我们称这个过程为页面传值。页面跳转过程中,从主页面跳转到子页面的数据传递称之为正向传值;反之,从子页面返回主页面时的数据传递称之为反向传值。
navigationBar其实有三个子视图,leftBarButtonItem,rightBarButtonItem,以及titleView。前两种的自定义请参考http://www.cnblogs.com/6duxz/p/4030916.html titleView的自定义就更简单了,把它看成一个视图,替换或者添加子视图都可以。以下我在titleView添加了两个button UIButton* actionNewButton = [[UIButton alloc]initWithFrame:CGRec
领取专属 10元无门槛券
手把手带您无忧上云