
iOS
iOS开发分享
零粹
简单
展开
-
iOS 点击事件、手势等响应区域
iOS 点击事件、手势等响应区域对于iOS的点击事件来说如果点击的区域超出了其本身的视图大小和其父视图的大小,是不会响应这个点击事件的这个特性对于UIControl, UIButton, UITapGestureRecognizer, UILongPressGestureRecognizer, UISwipeGestureRecognizer等响应点击事件的控件或手势来说是很重要的,只要控件或手势超出了其本身的大小和其父视图的大小,那就不会响应点击事件。超出响应区域仍能继续响应相关的事件但是对于滑动原创 2021-09-27 09:42:23 · 788 阅读 · 0 评论 -
iOS 添加PrefixHeader.pch文件
iOS 添加PrefixHeader.pch文件根据图中所示:找到pch配置项Precompile Prefix Header 设置为YESPrefix Header 设置为 $(SRCROOT)/文件所在项目目录/PrefixHeader.pch原创 2021-09-26 21:31:23 · 419 阅读 · 0 评论 -
iOS 串行队列请求多个接口
串行队列请求,同一个页面多个接口请求,都返回数据后去执行下一步。dispatch_queue_t queue = dispatch_get_global_queue(0, 0);dispatch_group_t group = dispatch_group_create();dispatch_group_enter(group);dispatch_async(queue, ^{ [self sendRequest1:group];});dispatch_async(queue, ^{原创 2021-09-22 15:14:35 · 1020 阅读 · 0 评论 -
iOS 15 UITableView新增属性、异常处理
iOS15中UITableView新增属性:@property (nonatomic, getter=isPrefetchingEnabled) BOOL prefetchingEnabled API_AVAILABLE(ios(15.0), tvos(15.0), watchos(8.0));/// The height for filler rows added below the last row when there aren't enough rows to fill a plain sty原创 2021-09-22 10:24:09 · 2406 阅读 · 0 评论 -
iOS并列label抗压缩、抗拉伸
##iOS并列label抗压缩、抗拉伸 // 抗被拉伸 [self.label setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; // 抗被压缩 [self.label setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UI原创 2021-09-18 17:26:53 · 1020 阅读 · 0 评论 -
iOS:UITableView下拉顶部背景色设置
//拉顶部背景色 [self.tableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew context:nil]; //用于拉伸的视图 - 作为顶部拉伸部位背景视图 [self.tableView.superview addSubview:self.stretchView];#pragm原创 2020-10-13 13:53:22 · 1100 阅读 · 0 评论 -
iOS 版本更新
typedef void(^UpdateBlock)(NSString *currentVersion,NSString *storeVersion, NSString *openUrl,BOOL isUpdate);-(void)updateWithAPPID:(NSString *)appId withBundleId:(NSString *)bundelId block:(UpdateBlock)block;-(void)updateWithAPPID:(NSString *)appId wit原创 2020-09-28 11:30:17 · 374 阅读 · 0 评论 -
iOS:Cordova框架(WKWebView)
使用WKWebView的开源框架https://github.com/ITHanYong/Hybird.WKWebView.git原创 2020-07-16 09:41:34 · 624 阅读 · 0 评论 -
iOS:cannot find interface declaration for ‘NSArray‘报错
cannot find interface declaration for 'NSArray'导入头文件#import <Foundation/Foundation.h>即可解决原创 2020-07-13 10:07:31 · 703 阅读 · 0 评论 -
iOS:WKWebView的简单应用
#import "ViewController.h"#import <WebKit/WebKit.h>@interface ViewController ()<WKNavigationDelegate,WKUIDelegate,WKScriptMessageHandler>@property (nonatomic, strong) WKWebView *webView;@end@implementation ViewController- (void)viewD原创 2020-07-09 09:53:44 · 802 阅读 · 0 评论 -
iOS:WKWebView设置UserAgent
iOS开发中,前端H5开发同学想获知H5页面是在App内部还是在其他浏览器被打开,则需要客户端配合修改默认的UserAgent, 以便区分。在iOS8之前一直用的都是UIWebView,但是在iOS9出了一个WKWebView,对比起来前者UIWebview就具有严重的内存问题,所以以后UIWebView会被慢慢替代。这里讲讲WKWebView怎么修改UserAgent。- (void)configWebViewUserAgent { WKWebView *webView = [[WKWebView原创 2020-07-08 14:36:28 · 3588 阅读 · 0 评论 -
iOS:原生代码添加约束(VFL)
|: 表示父视图 -: 表示距离 V: 表示垂直 H: 表示水平 >=: 表示视图间距、宽度和高度必须大于或等于某个值 <= :表示视图间距、宽度和高度必须小宇或等于某个值 == :表示视图间距、宽度或者高度必须等于某个值 @: 优先级 最大为 1000 |-[view]-|: 视图处在父视图的左右边缘内 |-[view] :原创 2020-07-06 16:39:36 · 1160 阅读 · 0 评论 -
iOS:原生代码添加约束
Width:对视图宽度的约束Height:对视图高度的约束Horizontal Spacing:对视图间水平距离的约束Vertical Spacing:对视图间垂直距离的约束Leading Space to Superview:与父视图左边界的约束Trailing Space to Superview:与父视图右边界的约束Top Space to Superview:与父视图上边界的约束Bottom Space to Superview:与父视图下边界的约束Widths Equally:视图原创 2020-07-06 16:33:25 · 1590 阅读 · 0 评论 -
iOS:自动适配tableViewCell的高度与缓存其高度,避免卡顿
demo:https://github.com/ITHanYong/AutoTableViewCell.git#import "BaseViewController.h"@interface BaseViewController ()@property (nonatomic, strong) NSMutableDictionary *heightAtIndexPath;//缓存高度@end@implementation BaseViewController- (void)viewDid原创 2020-06-22 10:42:56 · 2086 阅读 · 0 评论 -
iOS:.a静态库生成(二)
Demo https://github.com/ITHanYong/StaticLibrary2.git1、首先创建一个新的工程(选择Cocoa Touch Static Library)2、配置Scheme3、添加功能代码与设置公开头文件4、添加Aggregate将下面的脚本代码复制粘贴到上图中if [ "${ACTION}" = "build" ]then#要build的target名target_Name=${PROJECT_NAME}echo "targe原创 2020-06-18 12:50:20 · 396 阅读 · 0 评论 -
iOS:.a静态库生成(一)
Demo https://github.com/ITHanYong/StaticLibrary.git1、首先创建一个新的工程(选择Cocoa Touch Static Library)2、配置Scheme3、添加功能代码与设置公开头文件4、选择模拟器 command+B 编译、再选择真机command+B 编译5、根据下图操作定位到静态库文件可以看到有Release-iphoneos与Release-iphonesimulator两个文件夹,里面分别包含真机与模拟器生成的.a文件原创 2020-06-18 12:49:08 · 557 阅读 · 0 评论 -
iOS:error: unable to find utility simctl, not a developer tool or in PATH during validation.
error: unable to find utility “simctl”, not a developer tool or in PATH ) during validation.解决方案就是去xcode设置里面,将Command line Tools设置一下,在Xcode>preferences>Locations里面配置一下Command Line Tools原创 2020-06-18 12:39:39 · 780 阅读 · 0 评论 -
iOS:获取window根视图(rootViewController)和顶层UIViewController
#pragma mark - 获取window根视图- (UIViewController *)rootViewController{ if (!_rootViewController) { _rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; } return _rootViewController;}#pragma mark - 获取win原创 2020-06-18 12:34:51 · 2230 阅读 · 0 评论 -
iOS:如何在其他类中调用本类的方法
宏定义 - 传递函数、参数do { \_Pragma("clang diagnostic push") \_Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \Stuff; \_Pragma("clang diagnostic pop") \} while (0)使用:SuppressPerformSelectorLeakWarning([self performSelector:method withOb原创 2020-06-18 12:30:21 · 793 阅读 · 0 评论 -
iOS:dyld: Library not loaded: @rpath/libswiftCore.dylib
dyld: Library not loaded: @rpath/libswiftCore.dylib Referenced from: /private/var/containers/Bundle/Application/988816C8-D24A-4908-A105-5399297CD0A8/***.app/Frameworks/SocketIO.framework/SocketIO Reason: image not found解决方案:原创 2020-06-18 11:29:26 · 619 阅读 · 0 评论 -
iOS:library not found for -libstdc++.6.0.9
一、报错原因Xcode升级到Xcode10.0后,由于去掉陈旧的libstdc++库替换为libc++,libc++相对是苹果最新版的C++库,经过优化并全面支持C++11二、下载libstdc++库百度云盘下载链接 提取密码:ggob腾讯微云下载链接 提取密码:9jinsw三、将 libstdc++、libstdc++.6、libstdc++6.0.9拷贝到Xcode的如下目录:1、真机环境:/Applications/Xcode.app/Contents/Developer/Platfor原创 2020-06-18 11:17:35 · 1467 阅读 · 0 评论 -
iOS:3. 2.0 Business: Other Business Model Issues
Guideline 3.2 - BusinessDuring our review, we found that this app was designed for a specific business or organization and not for general distribution on the App Store. Business apps available on the App Store are meant for use by a wide variety of exte.原创 2020-06-18 11:14:06 · 2875 阅读 · 1 评论 -
iOS:UITableView、UIScrollView、UICollectionView内容为空时背景视图配置
iOS UITableView、UIScrollView、UICollectionView内容为空时背景视图配置1、引入头文件2、协议3、协议方法附件代码UIScrollView+EmptyDataSet.hUIScrollView+EmptyDataSet.mUITableView、UIScrollView、UICollectionView数据为空通过协议方法设置 图片、提示文字、按钮(以及点击事件)1、引入头文件#import "UIScrollView+EmptyDataSet.h"2、协议原创 2020-06-18 10:57:19 · 474 阅读 · 0 评论 -
iOS:计时器(5秒执行一次)
iOS 计时器(5秒执行一次)每5秒执行一次,切记离开页面时取下进程。/** 获取一个全局的线程来运行计时器*/ dispatch_queue_t queue2 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); /** 创建一个计时器*/ _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue2); /**原创 2020-06-18 10:47:11 · 2092 阅读 · 0 评论 -
iOS:UIScrollView、UITableView、UICollectionView顶部空白问题
UIScrollView、UITableView、UICollectionView顶部空白问题解决:配置下面代码即可解决。 if (@available(iOS 11.0,*)) { self.collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; self.scrollView.contentInsetAdjustmentBehavior = UISc原创 2020-07-02 09:21:58 · 816 阅读 · 0 评论 -
iOS:自定义日历案例
日历- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.manager = [LTSCalendarManager new]; self.manager.eventSource = self; self.manager.weekDayView = [[LTSCalend原创 2020-06-29 12:10:13 · 1168 阅读 · 1 评论 -
iOS:RunLoop的简单应用
RunLoop的简单应用- (void)runLoopAddDependance{ self.runLoopThreadDidFinishFlag = NO; NSLog(@"Start a New Run Loop Thread"); NSThread *runLoopThread = [[NSThread alloc] initWithTarget:self selector:@selector(handleRunLoopThreadTask) object:nil]原创 2020-06-29 10:27:02 · 918 阅读 · 0 评论 -
iOS:UISearchController的简单应用
UISearchController的简单应用//颜色#define UIColorFromRGB(value,a) [UIColor colorWithRed:((float)((value & 0xFF0000) >> 16))/255.0 green:((float)((value & 0xFF00) >> 8))/255.0 blue:((float)(value & 0xFF))/255.0 alpha:a]//获取状态原创 2020-06-29 10:19:22 · 486 阅读 · 0 评论 -
iOS:block的简单应用
Block:带有自动变量的匿名函数。 匿名函数:没有函数名的函数,一对{}包裹的内容是匿名函数的作用域。 自动变量:栈上声明的一个变量不是静态变量和全局变量,是不可以在这个栈内声明的匿名函数中使用的,但在Block中却可以。 虽然使用Block不用声明类,但是Block提供了类似Objective-C的类一样可以通过成员变量来保存作用域外变量值的方法,那些在Block的一对{}里使用到但却是在{}作用域以外声明的变量,就是Block截获的自动变量。Block的循环引用原理和解决方法大家都比较熟悉,此处将结原创 2020-06-29 10:16:31 · 324 阅读 · 0 评论 -
iOS:delegate(协议)的简单应用
1.定义协议(协议中存放代理的任务).我们对于有的自定义的布局视图,并不会带有协议,为了满足我们有时候的开发需求,需要添加代理.那么我们就要先定义一个协议.如下:在自定义视图的DelegateView.h文件中定义一个DelegateViewDelegate协议,协议默认的都是必须的实现的方法,可以根据需求来添加可选实现的方法.2.定义代理属性,用来存储代理对象.3.为DelegateView指定代理对象.(找个代理干活),例如:我们定义一个红色视图(要求点击时改变自身视图颜色),然后为它指定一个代理对原创 2020-06-29 10:10:10 · 353 阅读 · 0 评论 -
iOS:json简单解析
json简单解析-(NSString *)setJSON{ NSDictionary *dTest = @{ @"channel" : @{ @"nodeId" : @"ELS-002-001", @"name" : @"A", @"hasChildren" : @1, @"parentId" : @"-1" }, @"channels" :@"原创 2020-06-29 10:05:53 · 630 阅读 · 0 评论 -
iOS:NSString有关使用
1、字符串的编码、解码//编码-(NSString *) encodingString:(NSString *)string{ //iOS9之前 //NSString *str = [string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; //iOS9之后 NSString *str = [string stringByAddingPercentEncodingWi原创 2020-06-29 10:01:01 · 158 阅读 · 0 评论 -
iOS:RSA简单理解
在iOS中使用RSA加密解密,需要用到.der和.p12后缀格式的文件,其中.der格式的文件存放的是公钥(Public key)用于加密,.p12格式的文件存放的是私钥(Private key)用于解密. 首先需要先生成这些文件,然后再将文件导入工程使用。 一、使用openssl生成所需秘钥文件 生成环境是在mac系统下,使用openssl进行生成,首先打开终端,按下面这些步骤依次来做:1、生成模长为1024bit的私钥文件private_key.pem openssl genrsa -out priv原创 2020-06-29 09:54:10 · 1079 阅读 · 0 评论 -
iOS:指纹识别(Touch ID)的简单应用
指纹识别(Touch ID)的简单应用1、调用- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self setupNotification]; UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(10原创 2020-06-29 09:45:22 · 1778 阅读 · 0 评论 -
iOS:GCD的简单应用
GCD的简单应用- (void)GCD{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSLog(@"GCD - start"); // 异步追加任务 for (int i = 0; i < 2; ++i) { [NSThread sleepForTimeInt原创 2020-06-29 09:40:08 · 775 阅读 · 0 评论 -
iOS:UIWebView的简单应用
UIWebView的简单应用#import "ViewController.h"@interface ViewController ()<UIWebViewDelegate>@property (nonatomic, retain) UIWebView *webView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any addition原创 2020-06-29 09:27:05 · 155 阅读 · 0 评论 -
iOS:项目移除pod部分
基本步骤如下未删除第3步的文件会有以下报错Showing All Errors OnlyUnable to load contents of file list: '/Target Support Files/Pods-TimeSelectView/Pods-TimeSelectView-frameworks-Debug-input-files.xcfilelist'Showing All Errors OnlyUnable to load contents of file list: '/T原创 2020-06-24 16:04:51 · 1607 阅读 · 0 评论 -
iOS:时间选择器(仿有成会议)
调用时切记一定要先调用下面代码,重置时间状态self.timeSelectView.reset = YES;时间状态有:空闲时间、禁用时间、已占用时间、选择时间、固定时间空闲时间:@[@{@"start_time":@"09:00" ,@"end_time":@"17:59"}]禁用时间:@[@{@"start_time":@"00:00" ,@"end_time":@"08:59"},@{@"start_time":@"18:00" ,@"end_time":@"23:59"}]占用原创 2020-06-24 15:38:06 · 600 阅读 · 0 评论 -
iOS:简单创建cocoapods公共库
1. 创建一个工程打开终端,切换到你要创建的位置的目录,我这里是/Desktop/PODcd Desktop/PODpod lib create HYPodTestOneDemo1、What is your email?填入自己的邮箱地址。2、What platform do you want to use?? [ iOS / macOS ]根据自己的需要选择, 此处选择iOS。3、What language do you want to use?? [ Swift / ObjC ]根据原创 2020-06-24 13:12:09 · 1001 阅读 · 0 评论 -
iOS:swift设置部分圆角
可以将下面的configRectCorner方法写成公共方法,方便调用let label = UILabel(frame: CGRect(x: 50, y: 100, width: 100, height: 50))label.backgroundColor = UIColor.orangelabel.textColor = UIColor.whitelabel.text = "圆角设置"label.textAlignment = .center label.layer.mask原创 2020-06-24 13:05:14 · 2799 阅读 · 0 评论