uikit

SwiftUI从入门到实战第2章第3节:Slider的使用

大兔子大兔子 提交于 2020-08-06 10:44:41
相关课程: http://hdjc8.com/hdjc/swiftUI/ Slider相当于UIKit中的UISlider,通过移动滑杆实现指定区域和间隔的数值的选择。 Slider视图的使用非常简单,用户可以在最小值和最大值的范围内,通过拖动滑块进行数值的快速设置,所以常用于音量调整、播放进度和拍照缩放等场合。 示例代码: struct ContentView : View { //首先添加一个浮点类型的属性,并设置它的初始值为0。该属性拥有@State绑定包装标记,表示该属性将和滑杆视图进行数据绑定。 @State var temperature: Double = 0 var body: some View { VStack { Slider(value: $temperature) //添加一个新的滑杆视图,并设置它的最小值为-20,最大值为40。通过该滑杆,可以快速拾取位于-20和40之间的数值。 Slider(value: $temperature, in: -20...40) //添加一个尾随闭包,在闭包语句里打印一条日志信息,用来显示是否开始或停止拖动滑块。 Slider(value: $temperature, in: -20...40) { (item) in print(item) } HStack{ Image(systemName: "sun.max")

搜狗、字节,iOS面试算法题 (2020)

天涯浪子 提交于 2020-08-04 23:54:09
现在面试iOS中高级开发,算法题已是必然会出现的一个环节了,这里把面试遇到的算法题做一个小汇总,希望对大家有用。大部分公司是需要直接手写算法题的,这块儿的能力不容忽略的。 1:编程实现字符串拷贝,要考虑下内存重叠问题。 (搜狗) 2:对输入的字符串,去除其中的字符‘b’以及连续出现的‘a’和‘c’ (字节) 3:如何求两个 View 的最近公共父类 (字节) 1:编程实现字符串拷贝,要考虑下内存重叠问题。(搜狗) 解决思路 :既然要考虑内存重叠的问题,就是说可能目标地址的起始位置是在源字符串的后半段,或者目标的结束位置在源字符串的前半段。第一种情况,从末尾开始复制可以解决问题,同理:第二种情况,从首位开始复制可以解决问题,代码如下: char *memcpy_qi(char *dst, const char* src, int cl) { assert(dst != NULL && src != NULL); char *ret = dst; if (dst >= src && dst <= src+ cl-1) //内存重叠,从高地址开始复制 { //挪开空间 dst = dst+ cl-1; //将指针挪到结尾 src = src+ cl-1; while (cl—) *dst— = *src—; } else //正常情况,从低地址开始复制 { while (cl—)

UIView.animateWithDuration Not Animating Swift (again)

我与影子孤独终老i 提交于 2020-08-02 06:03:47
问题 Note: I’ve already checked the following stack overflow issues: 27907570, 32229252, 26118141, 31604300 All I am trying to do is fade animate in a view (by alpha) when called by an IBAction attached to a button. Then reverse when a button on the view is hit. My wrinkle may be that I'm using a secondary view that is on the ViewDock in the storyboard View. The view is added to the subview at the time of viewDidLoad where the frame/bounds are set to the same as the superview (for a full layover)

SwiftUI从入门到实战第2章第7节:TabView

偶尔善良 提交于 2020-07-27 20:53:44
相关课程: http://hdjc8.com/hdjc/swiftUI/ TabView相当于UIKit中的UITabBarController,用于实现标签视图集。 标签视图位于屏幕的底部,可以让用户在几个页面之间进行快速的切换,效果类似于UITabBarController。 标签视图所控件的页面位于大括号之内。TabView仅支持类型为文本、图像或LayoutView的标签项,其他类型的视图将产生一个可见的空白标签项。 示例代码: var body: some View { TabView { //添加一个文本视图,作为标签视图的第一个标签项。 Text("The home page.") .font(.system(size: 36)) //接着来设置文本视图的选项卡,只有设置了选项卡,才会在屏幕底部的选项卡列表里显示对应的标签。 .tabItem({ Image(systemName: "house") Text("Home") }) .tag(0) //继续添加另一个文本视图,作为标签视图的第二个标签项。 Text("The settings page") .font(.system(size: 36)) .tabItem({ Image(systemName: "gear") Text("Settings") }) .tag(1) } } 显示运行结果: 来源:

SwiftUI从入门到实战第2章第4节:使用UIKit中的WKWebView

那年仲夏 提交于 2020-07-27 14:36:53
相关课程: http://hdjc8.com/hdjc/swiftUI/ SwiftUI并没有包含WebView,这里通过遵循UIViewRepresentable协议,在SwiftUI中集成UIKit中的WKWebView。 示例代码: import SwiftUI //首先导入需要使用到的WebKit框架。 import WebKit //使当前的结构体遵循UIViewRepresentable协议。使用该协议的实例,可以在SwiftUI中创建和管理UIView对象。 struct ContentView : UIViewRepresentable { //实现协议里的makeUIView方法,用来初始化并返回一个WKWebView网页视图对象。 func makeUIView(context: UIViewRepresentableContext<ContentView>) -> WKWebView { return WKWebView() } //接着实现协议里的updatedUIView方法,用来设置网页视图需要加载的网址参数。 func updateUIView(_ uiView: WKWebView, context: UIViewRepresentableContext<ContentView>) { //初始化一个URLRequest对象,作为网页视图的网址。

SwiftUI从入门到实战第2章第1节:Picker

时间秒杀一切 提交于 2020-07-27 12:17:20
参考资料: http://hdjc8.com/hdjc/swiftUI/ Picker相当于UIKit中的UIPickerView,用于实现若干项目的选择。 示例代码: struct ContentView : View { //给当前的结构体添加一个数组属性,作为Picker列表的数据源。 var fruits = ["Apple", "Banner", "Pear", "Watermelon"] //添加另一个数组属性,作为Picker列表的每一个选项的字体颜色。 var colors = [Color.blue, Color.orange, Color.red, Color.purple] //然后添加一个整型属性,作为列表里的处于选择状态的选项的索引值,并给它添加@State绑定包装标记,使该属性和界面中的Picker视图进行数据绑定。 @State private var selectedItem = 0 var body: some View { VStack { //初始化一个Picker视图,并将它和selectedItem属性进行绑定,当用户操作Picker视图时,该属性的值将同步发生变化。 Picker(selection: $selectedItem, label: Text("Fruits")) { //接着来设置Picker视图的内容,首先添加一个循环语句

SwiftUI从入门到实战第2章第1节:PickerDate

橙三吉。 提交于 2020-07-27 06:32:13
相关课程: http://hdjc8.com/hdjc/swiftUI/ 本节演示DatePicker视图的使用,DatePicker和UIKit中的UIDatePicker类似,主要用于提供一个日期和时间列表,方便用户的选择。 示例代码: struct ContentView : View { //首先添加一个日期格式化类型的属性,您将用它对用户所选的日期和时间进行格式化,并显示在文本视图中。 var myDateFormatter: DateFormatter { let formatter = DateFormatter() //初始化一个日期格式化类型的实例,并设置它的日期样式为长类型,即依次显示月份、天数和年份。 formatter.dateStyle = .long return formatter } @State var selectedDate = Date() var body: some View { VStack { //DatePicker的组件类型被修改为小时和分钟类型,此时在右侧的预览窗口中,DatePicker组件包含了小时列表和分钟列表。 DatePicker(selection: $selectedDate, displayedComponents: DatePickerComponents.hourAndMinute) { Text("Date

Xcode 调试技巧 --常用命令和断点

老子叫甜甜 提交于 2020-07-27 05:28:42
Xcode 中的调试技巧与我们的日常开发息息相关,而这些调试技巧在我们解决Bug时,常常有事半功倍的作用,经常会用到的有各种断点 和 命令。而这些调试技巧也经常会在面试中问到,所以不知道的就来看看吧。 调试主要观看区 调试命令 在上图中,右侧绿色区域就是Log 输出区,在 Log 输出区可以使用一些命令,来辅助调试。 那有哪些调试命令呢? 想要看所有的调试命令,可以在上图的右侧区域输入 help ,就会列出所有的调试命令。 本文就介绍几个使用频率比较高的,其他就查看后,自行了解吧。 1. p 命令 -- ('expression --') Evaluate an expression on the current thread. Displays any returned value with LLDB's default formatting. p 命令是 print 命令的简写,使用p 命令可以查看基本数据类型的值,但是如果 使用 p 命令 查看的是对象,那么只会返回对象的指针地址。 p 命令后面除了可以接 变量、常量,还可以接 表达式。(❌但是不可以使用宏❌) 2. po 命令 po 命令可以理解为打印对象。功能与 p 命令类似,所以也是可以打印 常量、变量,打印表达式返回的对象等。(❌也不可以打印宏❌) p 和 po 使用范例 当然,这些打印功能,除了使用命令外

我可以在iPhone应用程序中嵌入自定义字体吗?

放肆的年华 提交于 2020-07-26 17:18:51
问题: I would like to have an app include a custom font for rendering text, load it, and then use it with standard UIKit elements like UILabel . 我想要一个包含自定义字体的应用程序,用于呈现文本,加载文本,然后将其与 UILabel 等标准 UIKit 元素一起使用。 Is this possible? 这可能吗? 解决方案: 参考一: https://stackoom.com/question/1VqZ/我可以在iPhone应用程序中嵌入自定义字体吗 参考二: https://oldbug.net/q/1VqZ/Can-I-embed-a-custom-font-in-an-iPhone-application 来源: oschina 链接: https://my.oschina.net/u/4428122/blog/4329203

How to change position of SearchBar in NavigationBar?

独自空忆成欢 提交于 2020-07-22 05:58:48
问题 I followed this article on how to display a SearchBar in the NavigationBar. I integrated it like this into my view: struct ExploreView: View { @ObservedObject var searchBar = SearchBar() var body: some View { NavigationView { ZStack { Color(red: 250/255, green: 250/255, blue: 250/255) .edgesIgnoringSafeArea(.all) VStack(spacing: 0) { Image(R.image.navigationBarBackground) .resizable() .scaledToFit() .frame(width: UIScreen.main.bounds.width) .edgesIgnoringSafeArea(.all) Spacer() } }