首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS15适配

想必都看过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

2.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

iOS中如何正确的实现行间距与行高

主要的原因在前言也提到了,Android 设备的文字上下默认留白(一节图中蓝色和红色重叠的部分)和 iOS 设备的是不一致的: ?...左侧是 iOS 设备,右侧 Android 设备,可以看到同样是显示 20 号的字体,安卓的行高会偏高一些。不同的 Android 设备使用的字体不一样,可能还会出现更多的差别。...这个属性十分有用,实现上标下标之类的需求也经常用到它。...行高和行间距同时使用时的一个问题 不得不说行高和行间距我们都已经可以完美的实现了,但是我尝试同时使用它们,发现了 iOS 的一个 bug(当然也可能是一个 feature,毕竟 crash 都不一定是...好在我们通常是行高和行间距针对不同的需求分别独立使用的,它们分开使用时不会触发这个问题。所以 VirtualView-iOS 库中,我暂且将高度计算的逻辑保持和系统一致了。

3.8K30

iOS crash分析实践

根据堆栈信息和日志信息,可以找到用户操作路径,是通过scheme进入分类; 但是直接用真机复现,相同的操作并不会导致crash; 通过分析crash出现的机型和系统特征,发现都是iOS 13以下系统...,而刚刚尝试的是iOS 13的真机; 于是用iOS 12模拟器尝试同样的路径,可以成功复现。...转码NSAttributedString耗时过长 业务需要把html格式的字符串转成NSAttributedString,原来HTML转码成NSAttributedString使用的是系统自带的方法:...方法访问到该按钮,则会发生crash; 2、详情页的某个view,使用getter的方式获取,dealloc方法访问了该getter; getter实现 ?...、使用一个不熟悉的系统API接口,最好花时间阅读下接口说明; 3、子线程发生crash,要习惯性看看主线程;

1.7K20

iOS文本布局探讨之三——使用TextKit框架进行富文本布局

iOS文本布局探讨之三——使用TextKit框架进行富文本布局 一、引言         关于图文混排,其实以前的博客已经讨论很多,实际开发中,经常使用第三方的框架来完成排版的需求,其中RCLabel...CoreText是一个比较底层且十分强大的文本渲染框架,但是其使用起来并不是十分方便。较低版本的iOS系统中,要进行富文本排版十分困难。...iOS6中,系统为UILabel,UITextView等这类文本渲染控件引入了NSAttributedString属性,有了NSAttributedString这个类,创建灵活多彩的文本控件变得十分轻松...试想,如果可以向一段文本中添加任意数据类型的文件,当用户点击这个文件,可以获取到文件数据并进行业务逻辑处理,这将十分酷。...当用户点击文件图标,会将携带的gif文件数据进行打印。 专注技术,热爱生活,交流技术,也做朋友。 ——珲少 QQ群:203317592

2K20

玩转 Xcode Playground(

尽量不要同时 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 中,如果不经过特别的设定

3.9K20

iOS表情键盘的完整实现

市面上的表情键盘的分析 首先来看一下市面上主要的几个APP的表情键盘,平时使用的时候不会去关注细节,这次特意去使用了表情键盘,发现各个APP的体验还是有优有劣的。...self.textView reloadInputViews]; break; default: break; } } 去除表情的拖拽交互 iOS11...,UITextView的NSTextAttachment(表情)默认可以进行拖拽交互,但是却导致拖动光标很容易触发这个交互(图示可以查看上面说到的微博国际版中的误触)。...if (@available(iOS 11.0, *)) { // 只iOS11及以上才有这个属性 _textView.textDragInteraction.enabled = NO;...就会从4个字符变成1个字符,这里是有差值的,如果处理的话就会出现上面提到的微博国际版中复制黏贴输入框的表情会导致光标位置不对,甚至莫名其妙多出前后空格的问题。

1.9K30

iOS坐标系探究

前言 app渲染视图,需要在坐标系中指定绘制区域。 这个概念看似乎简单,事实并非如此。...用我们Windows常用的画图来参考,当我们使用画笔白板中写字,图形上下文就是画笔的属性设置、白板大小、画笔位置等等。...当用CoreText渲染,坐标是(0,0),但是渲染的结果是左上角,并不是左下角;并且文字是上下颠倒的。...通常我们都会使用UIKit进行渲染,所以iOS系统drawRect返回CGContext的时候,默认帮我们进行了一次变换,以方便开发者直接用UIKit坐标系进行渲染。...iOS可以使用CGContextSaveGState()方法暂存context状态,然后CoreText绘制完后通过CGContextRestoreGState ()可以恢复context的变换。

2.7K30

Swift 小仿微博列表

你真的太帅了 查看图片 // @且行且珍惜iOS: 发起了话题#我是一只帅哥#不信点我看看 查看图片 , 相信我,不会让你失望滴O(∩∩)O哈!...富文本是由原始字符串经过一系列的正则匹配到目标字符串后,再经过一系列的字符串高亮、删除、替换等处理得到的 注意:每一个匹配项完成字符串处理后可能会改变原有字符串的NSRange,进而导致另一个匹配项的Range处理字符串出现越界的崩溃问题...自定义转场动画的实现可以看下我之前的文章iOS 自定义转场动画,这里我说一下动画视图的构造和图集浏览手势动画。...捏合放大缩小动画是由继承于UIScrollView的子类SLPictureZoomView完成;触摸点双击放大是根据触摸点在图片的位置和屏幕的位置得到放大后的触摸点相对位置来实现的;拖拽过渡转场是根据手指在屏幕的移动距离来调整...三、界面流畅度优化 网上关于界面流畅度优化的好文章还是挺多的,我在这里只记录下本文示例中用到的部分优化策略,基本FPS60左右, 详情可以看代码: 1、cell高度异步计算和缓存 2、富文本异步正则匹配和结果缓存

1.3K30

UI篇-CATextLayer和 富文本的交融

前言 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的区别是后一个可以自动换行,不过代价是 设置属性

2.4K10

提升UITableView性能-复杂页面的优化

UITableView是可以滑动的,为了不让用户滑动中感到有卡顿,该如何优化?下面,我就写一下我自己在做项目的“经验”~ 优化 主要分为以下几点: 只定义一种Cell。...所以,从整体看,每个Cell的结构是一致的!...的样式、内容,就可以通过显示、隐藏这三个子view来显示。...= 首先要确定的是,iOS中,系统会先调用“tableView:heightForRowAtIndexPath:”获取每个Cell即将显示的高度,从而确定整个UITableView的布局。...所以,既然高度总会被用到,那就早早的获取数据就计算好吧! Model(Entity)中计算并保存Cell的高度 其实,Model(Entity)中保存UI的参数是很奇怪的=。

99550

Sendable 和 @Sendable 闭包代码实例详解

使用泛型和枚举的隐式一致性 很好理解的是,如果泛型不符合Sendable协议,编译器就不会为泛型添加隐式的一致性。...是公开的,而标题title是内部的,模块外不可见。...因此,编译器不能在源文件之外应用Sendable一致性,因为它对标题属性不可见,即使标题使用的是遵守Sendable协议的String类型。...由于我们给自己和同事增加了额外的责任,我鼓励使用这个属性,建议使用组合、最终类或值类型来实现我们的目的。 如何使用 @Sendabele 函数可以跨并发域传递,因此也需要可发送的一致性。...使用@Sendable属性,我们将告诉编译器,他不需要额外的同步,因为闭包中所有捕获的值都是线程安全的。一个典型的例子是Actor isolation中使用闭包。

1.2K20

Swift 中的 Sendable 和 @Sendable 闭包

使用泛型和枚举的隐式一致性 很好理解的是,如果泛型不符合Sendable协议,编译器就不会为泛型添加隐式的一致性。...是公开的,而标题title是内部的,模块外不可见。...因此,编译器不能在源文件之外应用Sendable一致性,因为它对标题属性不可见,即使标题使用的是遵守Sendable协议的String类型。...由于我们给自己和同事增加了额外的责任,我鼓励使用这个属性,建议使用组合、最终类或值类型来实现我们的目的。 如何使用 @Sendabele 函数可以跨并发域传递,因此也需要可发送的一致性。...使用@Sendable属性,我们将告诉编译器,他不需要额外的同步,因为闭包中所有捕获的值都是线程安全的。一个典型的例子是Actor isolation中使用闭包。

1.4K30

SwiftUI 视图中打开 URL 的若干方法

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 {

7.6K31

六天完成一个简单iOS App - 第二天

登录页面效果图 关注页面比较简单,我们这里使用xib创建界面,比较好的方法是先设置好中间label的位置,然后根据中间label的位置来确定上面图片和下面按钮的位置,这里不在赘述了,只有一个注意点,当我们...建议在这里使用。 方法二:自定义button 并且重写layoutSubviews。...账号密码输入框登录按钮布局 这部分的布局也很简单,这里图片中提供了textfield的背景图片,所以这里我们先用UIImageView将背景图片显示,然后在在图片添加一个透明的textfield,所以...:(UITextField *)textField { // 结束编辑 } 方法三:使用通知 // object:self对象发出UITextFieldTextDidBeginEditingNotification...之前提到,为了避免重复多次的给textfield设置光标颜色和占位文字颜色,我们使用自定义textfield,awakeFromNib中统一设置即可。

2K50

IOS开发基础系列】下拉刷新专题

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

16830

iOS14开发-UIViewController

iOS 13 之后,模态跳转并非全屏显示,如果需要全屏显示,需要手动设置。 两个概念 presentedViewController: 被 present 的控制器。...逆向传值 逆向传值即按照 UIViewController 跳转的顺序反向进行传值,比如控制器A跳转到控制器B,控制器B返回控制器A进行传值,这种方式就是逆向传值。...需要传值的地方调用代理属性的方法完成传值。 代理对象(接收值的 UIViewController) 实现被代理对象声明的协议,实现协议中的方法,拿到传过来的值进行使用。...需要传值的地方调用闭包完成传值。 接收值的 UIViewController 实现需要传值的 UIViewController 中的闭包属性,闭包的实现中拿到传过来的值进行使用。...UINavigationItem是 UIViewController 的属性,用于配置当前 UIViewController 显示UINavigationBar显示的内容。

2.3K20
领券