自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Android 实现控件流式布局

要点如下:1. 测量规则:如果父控件是ViewGroup, 调用Measure方法,如果子控件是View,那么调用重写onMeasure测量,调用setMeasureDimension设置宽高子控件onMeasure 中, 必须知道 父控件的 测量规则 // 1. 测量的时候测量多次 // 父容器 给当前 视图的 widthMeasureSpe...

2020-08-03 10:23:15 136

原创 ble 多次断开 然后搜索连接,就是连接不上

异常信息:[ERROR:bta_gattc_utils.cc(458)] bta_gattc_mark_bg_conn unable to find the bg connection mask for bd_addr=00:a0:50:c1:67:51解决: 手机蓝牙死了 ,手机重启

2020-07-29 10:29:52 42

原创 Objective-c中枚举定义使用

1. 枚举定义#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN// 枚举定义typedef enum{ XMGTopicPicture =10, XMGTopicVideo= 20, XMGTopicImg= 30,} XMGType;@interface XMGComent : NSObject// 使用枚举类型@property(nonatomic,assign)

2020-07-16 16:45:30 52

原创 ios 日期时间处理:

1. NSDate <=> NString// 通用时间类型:void string2date(){ // 时间字符串 NSString *string = @"2015-11-20 09:33:22"; // 日期格式化类 NSDateFormatter *fmt = [[NSDateFormatter alloc] i...

2020-07-16 13:50:46 949

原创 Xib实现 Login 页面

1. xib 中按钮设置 设置 默认状态,点击状态的时候 选择 UIButtonTypeCustom ,避免默认的造成影响2.文本换行: 设置行数,按照option+enter在文本选项代码中: self.label.text=@"xiaoming\nxiaohie\nxiaoze" 设置line为0,那么label 就可以自动换行了3.ios 状态栏设置:// 设置状态栏白色 ,那么self.view内容可以从状态栏开始布局// 用途: 登录页面设置图片填充状态栏// self....

2020-07-16 11:24:13 60

原创 MJExtension使用注意

1、** dict- model NSDictionary* dict=@{@"username":@"小邓"}; User* user= [User mj_objectWithKeyValues:dict]; 2、** array<dict> - array<model>NSArray<XMGTopic *> *moreTo...

2020-07-15 17:02:49 362

原创 导航栏穿透效果原理图

首先看一下bounds和frame区别:每一个控件都有矩形框、内容区bounds: 以自己内容区为左上角为原点,矩形框左上角到该点的距离frame: 是以父控件内容区左上角为原点坐标contentOffset.x、contentOffset.y:和bounds x、y值一致,内容区和矩形区左上角距离contentInset:内边距...

2020-07-15 10:49:27 478

原创 ios 实现添加footer, footer实现九宫格效果

1.ios 设置 UITableViewCell 组和组之间距离UiTableView设置组和组之间的间距: 苹果没有提供api 设置组和组之间的间距, 可以设置组 heightForHeaderInSection heightForFooterInSection 来设置 组头部、底部高度 来设置 组合组之间的间距2.UiTableViewFooter 设置// 1. 获取底部控件最大高度 self.xmg_height= self.subviews.lastO...

2020-07-14 15:00:58 673

原创 ios 清理缓存功能实现

1.计算 沙盒 缓存大小 ,可能是 耗时 操作,放入子线程- (void)viewDidLoad { [super viewDidLoad]; // 沙盒路径 获取 NSLog(@"%@",NSHomeDirectory()); // 计算 缓存大小,可能是 耗时 操作,放入子线程 dispatch_async(dispatch_get_global_queue(0, 0), ^{ // library/cache NSS.

2020-07-14 14:00:14 124

原创 __weak typeof(self) weakself= self 使用

如下代码,在执行BViewController 被 close 以后, self 由于在gcd存在引用,不会被释放#import "BViewController.h"@interface BViewController ()@property (weak, nonatomic) IBOutlet UILabel *mylable;@end@implementation BViewController- (void)viewDidLoad { [super viewDid.

2020-07-14 11:14:18 93

原创 微信小程序快速入门学习2

1、 app.json: 全局配置app.wxss: 全局样式2、 home.json: 页面配置3、 数据绑定:<text data-id="{{ title }} ">{{ title }} </text><!-- checkbox 必须要这么写 不能check="true" --><checkbox checked="{{true}} "></checkbox>4. 页面运算:运算:{{ num1+ num...

2020-07-14 09:59:09 96

原创 css中遇到盒子居中问题

1. 有宽度、高度的盒子 水平 居中 margin:0 auto2. 没有宽度的盒子 水平居中<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> .box{ width: 500px; height: 300px; backg...

2020-07-08 09:14:49 60

原创 ios ble 蓝牙锁开发用例

开发流程:1. 建立中心管家2. 扫描外部设备3. 获取扫描的 外部设备,获取外部设备 , 连接外部设备4. 连接外设 成功,获取 发现服务5. 发现服务 uuid, 发现 服务下 特征值6. 读取 特征值 ,订阅 ble->app 通道 获取app->ble 特征值7. 接收 读取的特征值8. 锁入网,传递psw2 给app9. p1+p2 加密 systemId 鉴权 10. 锁回复 psw3 11.发送 开锁 确认帧代码...

2020-07-04 16:42:15 85

原创 ios mqttclient 使用连接、订阅、发送、透传

IOS使用场景 mqtt mqtt zigbeen -> 网关 -> 服务器 -> app

2020-07-03 11:06:25 91

原创 css3 transition 过渡使用总结

1.案例1 transition: 2s;<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> #test{ width: 200px; height: 200px; border-radius: 50%; background...

2020-06-26 14:10:37 80

原创 Dart基础语法归纳总结

1. 安装 下载:Dart Update 或者 下载dart sdk环境变量即可链接:https://pan.baidu.com/s/10jsPHVI-g-QCiutx45MTKg提取码:0p5r 安装vscode vscode 安装dart 插件、Code Runner插件2. Dart 基础语法1. 字符串2. 数组3. set 集合4. map 字符串: var str1="this is str1" String str2= "tha i...

2020-06-25 18:35:13 109

原创 Javascript基础语法总结

1、 内容11.函数中声明变量不使用var 就是全局变量,变量不使用var,属于window的一个属性2.Js数据类型 Number,String,Array,Date3. 调用属性方式4. 时间对象5. js中array 就是java list和stack6. 事件绑定方式27. window api 定时器8. 节点概念代码实现:<!DOCTYPE html><html> <head> <met...

2020-06-25 16:50:55 64

原创 ios frame和bounds区别

1. frames和 bounds理解frame: 是子控件相对于 父控件内容左上角为坐标原点bounds: contentView相对于自己控件坐标位置,控件内部内容区域滚动的时候frame和bounds体现:frame和bounds理解图:程序代码:#import "ViewController.h"@interface ViewController ()<UIScrollViewDelegate>@property (stron...

2020-06-21 22:18:34 74

原创 ios UIButton内边距理解

button设置内边距:UIButton结构, ImageView+ Lable 设置内边距EdgeInsets 以后会 压缩 在宽度,和前端中设置div内边距一样backButton.titleEdgeInsets=UIEdgeInsetsMake(10, 0, 0, 0); // 上边内边距10backButton.imageEdgeInsets=UIEdgeInsetsMake(0, 0, 10, 0)backButton.contentEdgeInsets = U...

2020-06-20 20:19:21 102

原创 ios 自定导航栏 返回按钮

导航控制器 默认 返回键盘默认是 一个箭头 + 上一个控制器名称,系统默认,如下图 如何自定义左上角控制器: 解决方法:A控制器进入detail控制器- (IBAction)showDatail:(id)sender { // 注意: 控制器背景色不要在这里设置 AControllerViewController* aController=[[AControllerViewController alloc] init]; aController.hides...

2020-06-15 11:17:45 820

原创 ios13.5.1 iPhone/iPad免越狱虚拟定位工具Location-cleaned驱动已更新

Iphone/ipad 最新驱动下载地址:https://download.csdn.net/download/dreams_deng/12523667

2020-06-15 10:18:49 3024 3

原创 ios uiscrollView 使用理解

1、 scrollview 常用属性理解UIScrollVie的常用属性 : contentSize 滚动方位,比scrollview的size大 contentInset 内边距, contentSize和scrollView的边框的一个距离,和div一样,内变距会计算到contentSize中 contentOffset 偏移量, contentSize+padding 距离边框的距离 弹簧效果 ...

2020-06-11 16:56:40 201

原创 ios mj_refresh 上拉、下拉、自定义header、footer、afn子类化

ViewController.#import "ViewController.h"#import <MJRefresh/MJRefresh.h>#import "Person.h"#import <AFNetworking/AFNetworking.h>#import <MJExtension/MJExtension.h>#import "XMGRefreshHeader.h"#import "XMGRefreshFooter.h"#impor...

2020-06-11 16:12:56 186

原创 ios 全局异常捕获,上传服务器

ios中 xcode设置全局断点快速定位问题代码所在行, 可以获取异常信息,然后上传服务器,做统计AppDelegate.m- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. NSSet...

2020-06-09 15:52:28 177

原创 ios NSInvocation基本使用

为什么要NSInvocation,NSInvocation比performSelector 调用方法,根据方法名可以传递三个参数-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ // performSelector 只能 根据方法名调用 2个参数 // 传递一个参数例子 [self performSelector:@selector(callWithNumbe

2020-06-09 15:48:39 133

原创 ios 基本框架使用

1. sdwebImage使用:1.1.基本使用- (void)viewDidLoad { [super viewDidLoad]; // 1. 图片 下载 简单方法 [self.myWebImage sd_setImageWithURL:[NSURL URLWithString:@"http://img5.mtime.cn/mg/2019/06/27/224744.68512147_120X90X4.jpg"]]; // options 图片下载策

2020-06-05 18:57:56 114

原创 Objective-C 线程 NSOperation

1. NSOperation 的子类实现: 在UI线程中执行都是1. NSInvocationOperation: 通过代理实-(void)touchesBegan1:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ /** 1. 第一个参数 : 目标对象 第二个参数: 选择器,要调用的方法 第三方参数: 方法要传递的参数 */ NSInvocationOper...

2020-06-04 14:57:10 73

原创 Objective-C 线程 GCD 使用

1. 概念:1.1 进程和线程的比较:线程是 cpu 调用的最小单位进程是 cpu 分配资源的最小单位一个进程中至少有一个线程进程内线程 资源共享 windows\mac 进程管理: 通过进程管理器, 可以直接杀死 linux 进程管理器: 通过ps | top | pstree | kill1.2. 多线程认识: 多线程 执行原理: 单核, cpu 多条线程切换, 多线程并发假像 多核 , 多线程的缺点:...

2020-06-03 14:12:15 84

原创 ios UIViewController 使用总结

1. 通过代码 实现控制器1.1. 自定义根控制器:iOS开发之Xcode11: 删除默认Main.storyBoard、自定义根控制器:https://blog.csdn.net/shifang07/article/details/104682190导航控制器:导航栏 一般 是 44,IOS 控制也是栈的结构, 入栈、弹出是出栈1.2.导航控制器api: //1. 跳入下一个控制器 BViewController* bController= [[BViewControll...

2020-06-02 15:03:52 106

原创 ios 数据存储 Bundle 沙盒

1. IOS数据存储:什么是沙盒: 与其他文件系统隔离,应用必须待在自己的沙河里面,不能互相访问bundle 和 沙盒是分开的*沙盒路径: Documents :比较贵重数据,Itunes 会设备的时候会备份改目录 Library/Caches : 不会备份,存储体积大 Library/Preference: 保存偏好设置, 系统管理,会备份 tmp: 临时数据,不会备份,引用没有运行时候,系统可能清除该目录*bundle路径: xx.app*...

2020-06-02 11:29:03 144

原创 ios 屏幕适配 autolayout | Masonry 使用

1. autolayout 属性设置: autolyout 对齐方式 autolayout 相对其他控件距离、宽高、相对于其他控件宽高, 如下图属性。2. 案例1: 设置控件水平、垂直居中 设置 垂直 水平 对齐、 设置控件宽高 【 注意:确定控件x,y坐标,以及宽、高那么久不会报红约束 存在问题】最终效果显示:3. 案例2 : 设置 兄弟 View之间的 约束A控件 设置左边、顶部、高度约束 B 控件·设置右侧、底部约束 、 设置A...

2020-06-01 17:41:08 178

原创 ios 控件UITableView 使用归纳总结

1. UITableView简单使用1. UITableView的基本使用 self.tableview.dataSource=self; self.tableview.delegate=self; -(NSInteger)numberOfSectionsInTableView: 返回多少组 -numberOfRowsInSection: 返回每组多少行, 有多少组,就调用多少次 -cellForRowAtIndexPath: 返回每组每行的cell, 有多少...

2020-06-01 10:44:34 759

原创 Gradle学习,这篇文章就够了

1. 配置gralde环境变量: D:\software\gradle-4.4\bin 【grale 需要JAVA_HOME】目录结构: bin : gradle 命令 docs: 手册 lib: gradle 依赖jar包 media: gradle 图标 sample: 例子 src: 源码输入 gradle 调用gradle.bat命令 默认搜索当前目录 build.gradle, 有输出信息,安装成功构建指定文件 : gradle...

2020-05-27 16:51:55 135

原创 Android 多媒体开发 MediaPlayer|SoundPool |MediaRecorder |Camera2| MediaProjectionManager

android支持音频格式: mp3、wav、3gp 视频: MP4、g3p 等等....1. MediaPlayer|SoundPool 使用 1.1. MediaPlayer 加载资源/** * 1.MediaPlayer create(Context context, Uri uri) * MediaPlayer create(Context context, int resid) * 上面2个方法每次调用都会 返回 MediaPlayer 对象...

2020-05-25 16:01:50 124

原创 Android 动态换肤框架原理

1. Android 系统PhoneWindow 源码阅读1.1. Activity实例化 PhoneWindow Activity: final void attach(Context context, ActivityThread aThread, Instrumentation instr, IBinder token, int ident, Application application, Intent intent, A...

2020-05-24 20:19:06 185

原创 Android收集奔溃信息 Thread.UncaughtExceptionHandler

Android 收集奔溃信息1.ExceptionCrashHandler implements Thread.UncaughtExceptionHandler 继承// 当App 奔溃的时候回调用这个方法 @Override public void uncaughtException(Thread thread, Throwable ex) { Log.e(TAG, "到拦截闪退信息"); // 手机信息+应用信息+ 捕获异常写入 sd...

2020-05-23 17:24:14 691

原创 Tinker热修复原理实现

热修复: 方案1: 在已加载类直接替换原有方法, 在原有类的基础上进行修改,无法实现对原有类的进行方法和字段增减 AndFix 会出现部分机型 上热修复失效, 不稳定类加载方案2: APP重新启动,让ClassLoader加载新类1. App 类加载器 ClassLoader下 子类 BaseDexClassLoader 加载 dexElements(classex dex,classex2 dex.....) Elements数组: ...

2020-05-19 16:19:31 678

原创 Android 进程保活,点击home键 或者 点击back键盘 、锁屏、息屏保证服务器定时器不会阻塞

点击home键保证 或者 点击back键盘 、锁屏、息屏,保活,保证定时器不会被阻塞,如果用户直接杀死App,那么无法保活进程保护状态: android 进程优先级:https://www.cnblogs.com/lixiansheng/p/11359937.html前台进程可视进程: activy有弹框服务进程: activity退出,后台服务在运行后台进程: 没有服务,activity退出空进程**进程管理策略:进程启动分为 冷启动和热启动 热启动:当用户退出某...

2020-05-19 14:41:36 219

原创 jz2440s3c2440 jtag口、串口、usb devices 使用

1.串口: 串口类型: 针串口 、usb串口的使用1. usb 串口 插入电脑2. 安装串口驱动,安装驱动以后 系统分配com4 窗口3. windows下载串口连接软件,连接串口,进入linux2.jtag烧写口: 针口(开发板10针口),需要排线连接板子和eop usb烧写器有哪些: jlink、op、 eop(jz2440标配)eop功能:1. 烧程序 2. usb 转串口功能1. 排线连接 板子上10针口和 eop ...

2020-05-16 09:58:07 186

原创  ios 控件   UIKit.framework

1. IOS 认识 1.info.plist: Bundle name: 应用名称 Bundle Identifirer: 应用唯一标识// 获取 Info.plist 路径 NSString* filepath= [[NSBundle mainBundle] pathForResource:@"Info.plist" ofType:nil]; // 获取配置文件,保存字典中 NSDictionary* dict= [NSDictionary di...

2020-05-12 22:12:21 204

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