想必都看过WWDC2021的Session了,Session原版视频依然是最有效的get新特性的渠道,iOS15多的特性就不说了,我就整理了我在适配iOS15路上的一些更改和调整。...适配以iOS15 beta6和xcode13 beta5为环境基础 UINavigationBar 用新xcode13编译工程后,导航栏的问题比较明显,调试之后发现是UINavigationBar部分属性的设置在...iOS15上是无效的 旧代码 navigationBar.setBackgroundImage(UIColor.clear.image, for: .default) // 导航栏背景,主题色是绿色 navigationBar.barTintColor...UINavigationBarAppearance来实现,UINavigationBarAppearance是iOS13更新的API,应该有人已经在用,我们的应用兼容iOS10以上,对于导航栏的设置还没有使用...UINavigationBarAppearance,如今在iOS15上失效,所以对于呈现的问题,做如下适配: 新代码 ...... if #available(iOS 15, *) { let
在使用中通过将AttributedString赋值给控件的 attributedText 属性来添加文字样式。 可设置的控件有UILabel、UITextField和UITextView。...(iOS不支持2)。...\n"; NSDictionary *dictAttr13 = @{NSExpansionAttributeName:@(0.5)}; NSAttributedString *attr13 = [[NSAttributedString...NSVerticalGlyphFormAttributeName 设置文字排版方向 取值为NSNumber对象(整数),0表示横排文本,1表示竖排文本 在iOS中只支持0 */ NSString...之所以把 NSLinkAttributeName 属性单独列出来,是因为在 UILabel 和 UITextField 中是无法使用该属性的。
Webview) III、HTML字符串与富文本互转 https://kunnan.blog.csdn.net/article/details/114015528 在这里插入图片描述 html->NSAttributedString...专注《iOS应用逆向与安全》(包括iOS基础)"; NSAttributedString *attStr = [[...: NSHTMLTextDocumentType} documentAttributes:nil error:nil]; IV、富文本在适配系统API的应用例子 4.1 适配iOS13UI控件...UITextField的_placeholderLabel 私有API 问题:iOS13无法直接访问_placeholderLabel.textColor 解决方案:使用 NSMutableAttributedString...placeholder" attributes:@{NSForegroundColorAttributeName:kTextPlaceholderColor, NSFontAttributeName:kTextFont(13
主要的原因在前言也提到了,Android 设备上的文字上下默认留白(上一节图中蓝色和红色重叠的部分)和 iOS 设备上的是不一致的: ?...左侧是 iOS 设备,右侧 Android 设备,可以看到同样是显示 20 号的字体,安卓的行高会偏高一些。在不同的 Android 设备上使用的字体不一样,可能还会出现更多的差别。...这个属性十分有用,在实现上标下标之类的需求时也经常用到它。...行高和行间距同时使用时的一个问题 不得不说行高和行间距我们都已经可以完美的实现了,但是我在尝试同时使用它们时,发现了 iOS 的一个 bug(当然也可能是一个 feature,毕竟不 crash 都不一定是...好在我们通常是行高和行间距针对不同的需求分别独立使用的,它们在分开使用时不会触发这个问题。所以在 VirtualView-iOS 库中,我暂且将高度计算的逻辑保持和系统一致了。
根据堆栈信息和日志信息,可以找到用户操作路径,是通过scheme进入分类; 但是直接用真机复现,相同的操作并不会导致crash; 通过分析crash出现的机型和系统特征,发现都是iOS 13以下系统...,而刚刚尝试的是iOS 13的真机; 于是用iOS 12模拟器尝试同样的路径,可以成功复现。...转码NSAttributedString耗时过长 业务需要把html格式的字符串转成NSAttributedString,原来HTML转码成NSAttributedString使用的是系统自带的方法:...方法访问到该按钮,则会发生crash; 2、详情页的某个view,使用getter的方式获取,在dealloc方法时访问了该getter; getter实现 ?...、使用一个不熟悉的系统API接口,最好花时间阅读下接口说明; 3、子线程发生crash时,要习惯性看看主线程;
iOS文本布局探讨之三——使用TextKit框架进行富文本布局 一、引言 关于图文混排,其实以前的博客已经讨论很多,在实际开发中,经常使用第三方的框架来完成排版的需求,其中RCLabel...CoreText是一个比较底层且十分强大的文本渲染框架,但是其使用起来并不是十分方便。在较低版本的iOS系统中,要进行富文本排版十分困难。...在iOS6中,系统为UILabel,UITextView等这类文本渲染控件引入了NSAttributedString属性,有了NSAttributedString这个类,创建灵活多彩的文本控件变得十分轻松...试想,如果可以向一段文本中添加任意数据类型的文件,当用户点击这个文件时,可以获取到文件数据并进行业务逻辑处理,这将十分酷。...当用户点击文件图标时,会将携带的gif文件数据进行打印。 专注技术,热爱生活,交流技术,也做朋友。 ——珲少 QQ群:203317592
从iOS官方的实现中可以看出文本算高会考虑简单文本字符串、属性字符串、字体大小、最大显示行数numberOfLines、段落信息、 段落的对齐方式、断字方式、段落的首行缩进、阴影偏移等等因素。...下面就是具体的实现代码: /// 使用此方法时请标明源作者:欧阳大哥2013。本方法符合MIT协议规范。...*calcAttributedString = nil; //如果不指定字体则用默认的字体。...numberOfLines, font, NSTextAlignmentNatural, NSLineBreakByTruncatingTail,0.0, CGSizeZero); } 下面是具体的验证测试用例(用例在iOS9...到iOS13上运行通过): CFTimeInterval simpleTextUILabelInterval = 0; CFTimeInterval simpleTextNOUILabelInterval
尽量不要同时在 macOS 的 Xcode 和 iPad 的 Swift Playgrounds 上同时编辑一个项目,容易造成版本冲突。...在输入新的代码后,可以采用输入 Shift-Return 的方式让 Playground 执行截至本行尚未执行的代码。此种方式在不希望反复执行长耗时代码段的情况下将非常有用(例如机器学习)。...image-20211223144432779 在没有必须依赖 iOS 框架代码的情况下,将运行环境设置为 macOS 可以减少因 iOS 模拟器错误引发的不稳定状况。...比如说,WWDC 2021 上新推出的 AttributedString[3] 目前尚不支持 QuickLook ,但通过在 playgroundDescription 中将其转换为 NSAttributedString...如何获得异步执行的结果(Swift Playgrounds Only) 在老版本的 Xcode(Xcode 12、Xcode 13 已经解决了这个问题)以及 Swift Playgrounds 中,如果不经过特别的设定
市面上的表情键盘的分析 首先来看一下市面上主要的几个APP上的表情键盘,平时使用的时候不会去关注细节,这次特意去使用了表情键盘,发现各个APP的体验还是有优有劣的。...self.textView reloadInputViews]; break; default: break; } } 去除表情的拖拽交互 在iOS11...上,UITextView上的NSTextAttachment(表情)默认可以进行拖拽交互,但是却导致拖动光标时很容易触发这个交互(图示可以查看上面说到的微博国际版中的误触)。...if (@available(iOS 11.0, *)) { // 只在iOS11及以上才有这个属性 _textView.textDragInteraction.enabled = NO;...就会从4个字符变成1个字符,这里是有差值的,如果不处理的话就会出现上面提到的微博国际版中复制黏贴输入框的表情会导致光标位置不对,甚至莫名其妙多出前后空格的问题。
前言 app在渲染视图时,需要在坐标系中指定绘制区域。 这个概念看似乎简单,事实并非如此。...用我们在Windows常用的画图来参考,当我们使用画笔在白板中写字时,图形上下文就是画笔的属性设置、白板大小、画笔位置等等。...当用CoreText渲染时,坐标是(0,0),但是渲染的结果是在左上角,并不是在左下角;并且文字是上下颠倒的。...通常我们都会使用UIKit进行渲染,所以iOS系统在drawRect返回CGContext的时候,默认帮我们进行了一次变换,以方便开发者直接用UIKit坐标系进行渲染。...iOS可以使用CGContextSaveGState()方法暂存context状态,然后在CoreText绘制完后通过CGContextRestoreGState ()可以恢复context的变换。
你真的太帅了 查看图片 // @且行且珍惜iOS: 发起了话题#我是一只帅哥#不信点我看看 查看图片 , 相信我,不会让你失望滴O(∩∩)O哈!...富文本是由原始字符串经过一系列的正则匹配到目标字符串后,再经过一系列的字符串高亮、删除、替换等处理得到的 注意:每一个匹配项完成字符串处理后可能会改变原有字符串的NSRange,进而导致另一个匹配项的Range在处理字符串时出现越界的崩溃问题...自定义转场动画的实现可以看下我之前的文章iOS 自定义转场动画,这里我说一下动画视图的构造和图集浏览手势动画。...捏合放大缩小动画是由继承于UIScrollView的子类SLPictureZoomView完成;触摸点双击放大是根据触摸点在图片的位置和屏幕上的位置得到放大后的触摸点相对位置来实现的;拖拽过渡转场是根据手指在屏幕上的移动距离来调整...三、界面流畅度优化 网上关于界面流畅度优化的好文章还是挺多的,我在这里只记录下本文示例中用到的部分优化策略,基本上FPS在60左右, 详情可以看代码: 1、cell高度异步计算和缓存 2、富文本异步正则匹配和结果缓存
前言 CATextLayer适用于IOS或者MAC,比UIlablel 和 NSTextView 能做的事很多,可以这样说UIlablel是通过CATextLayer实现的,身为CALayer的三大子类之一...下面就简要介绍下CATextLayer 的常规使用,不足之处,还望朋友们下面留言补充,不胜感谢。...在使用中通过将AttributedString赋值给控件的 attributedText 属性来添加文字样式。有属性的控件有UILabel、UITextField和UITextView。...文字方向 @[@(1),@(2)] 分别代表不同的文字出现方向等等,我想你一定用不到它 - - //NSVerticalGlyphFormAttributeName 水平或者竖直文本 1竖直 0水平 在iOS...]; _textV.textColor = [UIColor whiteColor]; 值得注意的地方是 drawAtPoint和drawInRect的区别是后一个可以自动换行,不过代价是 不设置属性
UITableView是可以滑动的,为了不让用户在滑动中感到有卡顿,该如何优化?下面,我就写一下我自己在做项目时的“经验”~ 优化 主要分为以下几点: 只定义一种Cell。...所以,从整体上看,每个Cell的结构是一致的!...的样式、内容时,就可以通过显示、隐藏这三个子view来显示。...= 首先要确定的是,在iOS中,系统会先调用“tableView:heightForRowAtIndexPath:”获取每个Cell即将显示的高度,从而确定整个UITableView的布局。...所以,既然高度总会被用到,那就早早的在获取数据时就计算好吧! 在Model(Entity)中计算并保存Cell的高度 其实,在Model(Entity)中保存UI的参数是很奇怪的=。
使用泛型和枚举时的隐式一致性 很好理解的是,如果泛型不符合Sendable协议,编译器就不会为泛型添加隐式的一致性。...是公开的,而标题title是内部的,在模块外不可见。...因此,编译器不能在源文件之外应用Sendable一致性,因为它对标题属性不可见,即使标题使用的是遵守Sendable协议的String类型。...由于我们给自己和同事增加了额外的责任,我不鼓励使用这个属性,建议使用组合、最终类或值类型来实现我们的目的。 如何使用 @Sendabele 函数可以跨并发域传递,因此也需要可发送的一致性。...使用@Sendable属性,我们将告诉编译器,他不需要额外的同步,因为闭包中所有捕获的值都是线程安全的。一个典型的例子是在Actor isolation中使用闭包。
iOS7、iOS9、iOS10 UIApplication *app = [UIApplication sharedApplication]; // 应用程序右上角数字 app.applicationIconBadgeNumber...received permission from the user to badge the 原因是因为在ios8中,设置应用的application badge value需要得到用户的许可。...两种方式: NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData: [orangeStr dataUsingEncoding...关键源码: # 1.通过 UITextFeild绑定方法,该方法可以在UITextFeild 字符改变时触发 [_pwdTextField addTarget:self action:@selector...用中华万年历里的 xml 数据 ,亲测可用,网上很多免费的天气网址都是不更新数据的死网站,坑 网络链接 7.设置UIImagePickerController导航条上显示中文界面 # Project
image-20220520182722773 SwiftUI 1.0( iOS 13、Catalina ) 在视图中,开发者通常需要处理两种不同的打开 URL 的情况: 点击一个按钮( 或类似的部件...image-20220522085352243 Text 用例 3 :包含 link 信息的 AttributedString 在 WWDC 2021 上,苹果推出了 NSAttributedString...) -> OpenURLAction.Result // 当前代码不处理,将新的 URL 向下传递( 如果外层没有用户的自定义 OpenURLAction ,则使用系统默认的实现) } }...handler 的返回结果 handled 和 discarded 都将阻止 url 继续向下传递,它们之间的不同只有在显式调用 openURL 时才会表现出来。..."Success" : "Failure") } 结合上面的介绍,下面的代码将实现:在点击链接后,用户可以选择是打开链接还是将链接复制在粘贴板上: struct ContentView: View {
1 UIRefreshControl实现 1.1 使用范围 如果你装了xcode_4.5_developer_preview,那么在UITableViewController.h文件中你会看到...; // self.refreshControl.tintColor = [UIColor blueColor]; self.refreshControl.attributedTitle = [[NSAttributedString...遗憾的时目前只看到下拉刷新功能,上拉刷新还没有,估计在最终版里面苹果会考虑加入上拉刷新功能。 ...1.2.2 b)下拉刷新事件监听 当用户进行下拉刷新操作时,UIRefreshControl会触发一个UIControlEventValueChanged事件,通过监听这个事件,我们就可以进行类似数据请求的操作了...tableView上 2.4.4 配置视图控制器和页脚EGOTableViewPullRefreshDemoViewController.m • 在.m文件中添加下面代码 #pragma mark
iOS 13 之后,模态跳转并非全屏显示,如果需要全屏显示,需要手动设置。 两个概念 presentedViewController: 被 present 的控制器。...逆向传值 逆向传值即按照 UIViewController 跳转的顺序反向进行传值,比如控制器A跳转到控制器B,控制器B在返回控制器A时进行传值,这种方式就是逆向传值。...在需要传值的地方调用代理属性的方法完成传值。 代理对象(接收值的 UIViewController) 实现被代理对象声明的协议,实现协议中的方法,拿到传过来的值进行使用。...在需要传值的地方调用闭包完成传值。 接收值的 UIViewController 实现需要传值的 UIViewController 中的闭包属性,在闭包的实现中拿到传过来的值进行使用。...UINavigationItem是 UIViewController 的属性,用于配置当前 UIViewController 显示时UINavigationBar上显示的内容。
登录页面效果图 关注页面比较简单,我们这里使用xib创建界面,比较好的方法是先设置好中间label的位置,然后根据中间label的位置来确定上面图片和下面按钮的位置,这里不在赘述了,只有一个注意点,当我们在...不建议在这里使用。 方法二:自定义button 并且重写layoutSubviews。...账号密码输入框登录按钮布局 这部分的布局也很简单,这里图片中提供了textfield的背景图片,所以这里我们先用UIImageView将背景图片显示,然后在在图片上添加一个透明的textfield,所以...:(UITextField *)textField { // 结束编辑时 } 方法三:使用通知 // object:self对象发出UITextFieldTextDidBeginEditingNotification...之前提到,为了避免重复多次的给textfield设置光标颜色和占位文字颜色,我们使用自定义textfield,在awakeFromNib中统一设置即可。
领取专属 10元无门槛券
手把手带您无忧上云