Dev

技术相关

SwiftUI 预览视图

SwiftUI 一个很强的特性就是可以实时预览页面,边写代码边看代码的实现效果 同时预览多个机型 如果想在 SwiftUI 项目中预览多个机型的话,可以把 Preview 的代码改成如下形式: struct ContentView_Previews: PreviewProvider { static var previews: some View { Group { ContentView() .previewInterfaceOrientation(.portrait) // 这里修改设备屏幕方向 ContentView() .previewInterfaceOrientation(.landscapeLeft) ContentView() .previewDevice(PreviewDevice(rawValue: "iPhone 12 Pro")) // 这里修改设备型号,设备型号

By Gray

Swift Package 技巧及混编兼容问题

创建 Package mkdir somePath cd somePath swift package init (--type library/executable/empty/system module) 其中,type 的四种类型分别对应: * library: 库(默认) * executable: 可执行文件 * empty: 空项目 * system module: 系统模板项目 一般情况下默认即可 创建 package 之后,还可以使用 swift package generate-xcodeproj 创建一个Xcode项目来编译和调试代码 使用 Package 在 Xcode 菜单栏中,选择 file -> add packages 可以指定 package

By Gray

iOS 计算显示字符串和字体所需要的宽度

方法一(推荐) 有时候需要根据一个字符串的内容和所用字体,计算显示这个字符串所需要的 label / view 宽度。可以使用以下方法计算: var greeting = "Hello, playground" let size = greeting.size(withAttributes: [.font: UIFont.systemFont(ofSize: 12)]) print(size.width) // 输出 98.94140625 然后用ceil()对计算结果向上取整,即可得到所需要的宽度 方法二 除了上面的方法外,还有一种方法,如下: var greeting = "Hello, playground" let limitSize = CGSize(width: CGFloat.greatestFiniteMagnitude, height:

By Gray

Swift Syntax Tips 语法技巧

if…case… 有时候一个变量的值会有很多种情况,但是我们只对其中一种或几种情况关心。这时候如果使用switch语句的话,是这样的: switch value { case A: //code default: break } 但是这样会使代码很冗长。我们可以用更加简洁且具备更强大模式匹配功能的if...case...语句: if case A,B { //code } 其中,A、B代表两个条件分支。例如对年龄的判断: var age = 23 if case 20...30 = age, age <= 25 { //code } 懒加载 lazy 开发移动应用时要着重考虑内存和计算资源的节省,懒加载就是为了这种场景而诞生的。懒加载就是直到使用者要读取某个值时才初始化这个值。由于懒加载发生的时间是不定的,且其属性也是会变化的,因此懒加载属性只能用var来定义,其关键词为lazy class student { var

By Gray

pyqt分辨率不同的设备显示问题

当两个不同分辨率不同的设备运行同一个由Qt开发的程序时,会出现控件大小不一致甚至无法正常显示等问题。解决这个问题的方法是在主函数(程序入口)最前面添加一行代码: QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling) 比如, if __name__ == '__main__': QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling) app = QApplication(sys.argv) win = myWin() win.show() sys.exit(app.exec()) 假如你是用的C++语言的话,添加如下代码 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

By Gray