在2018年WWDC活动中,Apple推出了macOS Mojave,它是macOS High Sierra的后继产品,为Mac带来了最受期待的功能之一。 对于Mac和iOS开发人员来说,这也是一个好消息,原因之一是:macOS的主要IDE和开发工具Xcode多年来一直缺少这种功能。 开发人员社区深信,使用深色IDE或文本编辑器实际上可以提高您的工作效率。 考虑到许多现有的代码编辑器都支持暗模式,例如Visual Studio,JetBrains产品系列以及许多其他模式,这似乎是事实。 问题在于,直到macOS Mojave发行时,Xcode才提供此功能,当发行时,它引起了两个不同的问题。 Mail.app,Calendar.app甚至Finder之类的应用对于许多人来说似乎都不正确 。 作为开发人员,我们习惯于在Light模式下使用这些应用程序,但是我们非常喜欢Dark Xcode,以至于我们难以选择:在系统范围内启用Dark Mode或将其保留为当前状态,从而失去了美妙的Dark同时使用Xcode主题。
让我们迈出新一步,使Xcode的构建速度提高60%! 🏎 Xcode在派生数据文件夹(〜/ Library / Developer / Xcode / DerivedData)中存储和使用所有与构建相关的缓存文件和杂项数据,除非您运行导出命令。 但是缓存此路径并不是我们唯一要做的事情,因为Xcode缓存取决于项目结构及其所有属性,例如文件修改时间,内容等。 当您在Bitrise上克隆存储库以进行构建时,所有文件的修改时间都将设置为当前时间(git clone的时间),因此,即使大多数文件都已被修改 ,所有新构建的所有文件都将被视为已更改 。内容在构建之间完全没有变化。 为了避免更改文件修改时间,我们创建了一个名为“ 递归缓存缓存” 的新步骤 。 它有2个输入: 目录的路径(默认情况下:“ $ BITRISE_SOURCE_DIR”) 时间(默认为:“ 2017–09–01T15:00:00 + 00:00”)输入字段 此步骤将在给定目录下设置所有文件修改时间,因此在您随后开始的构建中,文件的修改时间将相同。 如果要使用适当的Xcode缓存,则必须设置两个步骤: 递归缓存缓存步骤-保留两次构建之间的项目文件修改时间。 这应该在您的Xcode单元测试步骤之前进行 Cache:Pull,Cache:Push —缓存派生的数据路径(将以下路径同时放入Cache:Push步骤的缓存路径,并忽略路径输入:〜/ Library / Developer / Xcode / DerivedData)。 您如何确认缓存是否按预期工作? 缓存之前,日志如下所示: 如果缓存正在工作,它将是这样的: === BUILD TARGET ios-simple-objc OF PROJECT ios-simple-objc WITH CONFIGURATION Debug === Check […]
IOS 11.3之后的Safari 11.1支持PWA,也可以直接加入主屏幕,看来今年webapp的发展可以更快速了。 除了PWA之外,还有其他亮点: 支付API 信标API 画布调试 文件和目录条目API 这次的更新真是振奋人心,更多资讯请参考:https://developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/Articles/Safari_11_1.html 2018/1/26更新 今天花了一点时间把模拟器装起来测试,结果PWA的支持不如预期,这位作者有更完整的测试,简单来说就是目前的PWA还是很掰咖,例如: 1.无法离线访问 2.没有启动画面 3. webview的缓存无法共享 4.无法设定方向 5. link的行为没有区别external link,一律都在app本身打开,连到外站就无法回来了 6.每次都会重新载入 7.没有Web App标语 总之,理想跟现实还是有很大的分歧,希望正式版发布还可以解决这些问题。 编号:https://medium.com/@firt/pwas-are-coming-to-ios-11-3-cupertino-we-have-a-problem-2ff49fd7d6ea
有时,我的客户告诉我,他们无法连接到服务或具有错误数据。 服务器和应用程序上没有错。 也许网络环境慢是问题所在。 在我的开发环境中,我拥有高质量的wifi和蜂窝网络。 我该如何重现这种情况。 您可以轻松地在设备上测试问题。 设置>开发人员>网络链接调节器>状态>启用(选择eanble)并选择配置文件(可能是网络状况很差)。 然后,您可以在慢速网络上测试您的应用程序。 如果还不够,您想调整一些值以进行更多测试。 您需要复制配置文件,然后编辑所需的一些值。
希望将电话直接交付给员工并让他们设置电话并连接到公司资源听起来很简单,但用户通常要打电话给服务台,询问如何设置电话以正常工作。 用户通常没有Apple App Store帐户,因此当被要求安装Outlook和Company Portal时,他们会感到困惑。 如果电话是为用户部分设置的,但不需要额外的管理员和人员来执行此操作,那就太好了。 设置Apple注册计划并使用Apple的批量购买计划可以解决其中一些问题。 正确设置用户将立即获得所需的所有应用程序 设置DEP程序后,请添加受监管的电话。 同时锁定注册,这将阻止用户手动从Intune取消注册。 从Intune中的Apple注册配置文件中执行此操作 苹果注册资料 在您的Apple批量购买计划中,添加您的App (顺便说一下,这是旧的门户,现在已移至新的门户,但概念是相同的) 苹果批量购买计划 搜索所需的应用程序 选择数量 下订单 返回Intune,转到您的iOS VPP令牌 IOS VPP代币 运行同步 现在,这应该从Apple批量许可计划中引入APP 根据需要分配应用 添加您希望用户首次使用时收到的应用程序,根据需要添加它们,以便他们自动安装。 我给了用户 公司门户,Microsoft身份验证器,Microsoft Outlook和OneDrive 将应用分配给组并完成 现在,在前几个设置屏幕上首次使用手机后,用户即可获得开始使用所必需的应用程序。
在UIWebView中进行浏览。 심지어로자바스크립트파사파리에다리다。 WWDC 2014将使用WKWebView,AppKit,WebView,UIKit,UIWebView,API和Webview。 60fps스크롤링,빌트인-제스처,App-WebPage커뮤니케이션을제공한다。 UIWebView和WKWebView和2位用户。 在UIWebView和UIKit中,导入import필요하다。 그래서接口构建器사용할있다。 W다음,WKWebView javascriptjavascript최적화를로프스세다。 Web UIWebView보다빠르고이다。 iOS,iOS 8에서本地文件을로드하는데,가가지고다。 iOS 9에서정된사항이다。 아래의에서이점은아래의URL에서능하가능하다。 WKWebKit框架 WKBackForwardList —图库照片 WKBackFowardListItem —后退리스트에페이지 WKFrameInfo —在frameframe中添加정보를 WKNavigation —웹이지로딩을정를정보를포함 WKNavigationAction —动作导航유발하는动作정를 WKNavigationRespoonse —导航 WK首选项—웹뷰의정설 WKProcessPool —池中的池 WKUserController —用户脚本的用户指南 WKScriptMessage — K이지로보낼지의정보를 WKUserScript —크립트스지크립트스크립트 WKWebViewConfiguration —属性列表集合 WKWindowFeatures —图库照片 通讯协定 WKNavigationDelegate —主/副框架加载정책과主机导航과정을메소드를공공 WKScriptMessageHandler —웹페스에스크립트지를제메소드 WKUIDelegate —在本机UI中进行操作 Javascript —本机通信 讯息处理常式 Web消息处理程序。 […]
致力于React Native初学者 〜从零开始React Native 拥有Mac机器。 从计算机上的App Store安装Xcode。 是的,您可以安装最新的 安装节点 下载链接-https://nodejs.org/en/download/ 将其安装在您的机器上 打开terminl并输入“ npm -version”将类似于5.xx [其中x是> 0的整数] 键入此命令以转到4.6.1稳定版本“ npm install -g npm@4.6.1” 打开terminl并输入“ npm -version”,它将显示4.6.1。 安装守卫 当心〜如果您不安装watchman,然后再运行“ npm start”,它将显示错误消息,例如 无法启动服务器,请运行以下代码段:sudo sysctl -w fs.inotify.max_user_instances = 1024 sudo sysctl -w fs.inotify.max_user_watches = 12288 建立专案 打开终端 输入commad“ npm install -g create-react-native-app”。 这将安装create-react-native-app,在创建项目的任何路径上都可以使用 在终端上,导航到要在其中创建本机项目的路径 键入命令“ create-react-native-app MyFirstRNProject”项目这将创建一个新的React Native Project,其文件夹名为MyFirstRNProject 运行项目 […]
通过#iOS设备进行文档管理 我最喜欢的移动文档管理应用程序是GoodReader(iOS应用程序商店链接),我已经使用8年了! 这是有关通过应用程序和“拼合”注释共享PDF文档的快速提示( 如果收件人不需要进行更改(例如,如果您签署文档并一起转发 ),请始终执行此操作 )。 这是邮寄PDF的方法 1 —在GoodReader中打开PDF 以下步骤显示了处于活动状态的“浮动菜单”。 通过点击屏幕中央可以“激活”此功能(点击屏幕将菜单切换为ON和OFF-FYI)。 2 —点击屏幕底部的共享按钮 出现“选择动作”菜单。 选择所需的选项-就我而言,我想通过电子邮件发送PDF。 注意:如果对文档进行了广泛的注释,则可能需要选择“电子邮件文件+摘要”。 这将与文档一起发送对文档所做的所有注释的摘要。 在正确的情况下非常有帮助! 3-必要时展平注释 通常,您希望使注释变平(这使标记成为文档的一部分,而不是单独的“层”)。 这将确保收件人可以“看到”文档上的注释。 如果您不这样做,则根据收件人查看PDF的方式,可能不会显示它们。 4 —发送文档 而已。 收件人将通过电子邮件收到您的文档。
需要一种在UILabel中自定义某些文本的方法,并决定在玩Xamarin Workbooks的同时进行快速发布。 为了自定义UILabel中的某些文本,您首先需要找到其范围。 为此,使用要显示在UILabel中的文本创建一个新的NSMutableAttributedString: var mutableStr = new NSMutableAttributedString(“我的测试字符串。”); 接下来,找到您要自定义的文本范围。 在此示例中,我们将找到“测试”的范围,并应用两个属性,颜色+字体大小/粗体。 可以使用我们的可变字符串通过以下方式定位范围: var range = mutableStr.MutableString.LocalizedStandardRangeOfString(new NSString(“ test”)); 现在我们找到了范围,剩下的就是应用属性。 第一个属性是蓝色前景色: mutableStr.AddAttribute(UIStringAttributeKey.ForegroundColor,UIColor.Blue,range); 接下来,让字体变为粗体并将其增加到30号: mutableStr.AddAttribute(UIStringAttributeKey.Font,UIFont.BoldSystemFontOfSize(30),range); 属性更改后,剩下的就是设置标签的属性文本,并且由于我使用的是Xamarin Workbooks,因此呈现UILabel。 var label = new UILabel(new CGRect(100,100,300,100)); label.AttributedText = mutableStr; RootViewController.View.AddSubview(label); 这是我的工作簿UILabelAttributedText.workbook的链接:https://app.box.com/s/bmg93cujthsbka5v99lzfitrn0ijfts5 Xamarin Workbooks很有趣,确实为我节省了时间。 我不必创建控制台应用程序来测试概念和较小的更改,例如上面的示例。 所有这些都是在Windows和Mac联网的Windows上完成的。 编码愉快!
对于正在工作的项目,我正在创建一个React Native应用程序。 React Native的好处是您可以从远程服务器加载javascript包(可以说是应用程序的大脑)。 这意味着您可以进行更新和更改,而无需经过App Store批准过程。 不利的一面是,在应用程序实际加载之前,需要一两秒钟的时间来加载捆绑软件。 除非您有一些花哨的Objective-C或Swift“加载”动画,否则它只会显示白屏。 我没有iOS编程方面的经验,所以我决定做第二件事-从设备本地加载捆绑软件。 我能够整理本指南中的大部分内容,但其中一些我必须自己弄清楚。 所以你想动态更新你的React Native App 在工作中,我们最近在应用程序中发布了第一个React Native组件,并且我一直在考虑如何(以及是否… medium.com) React Native为您提供了将JS捆绑软件存储在应用程序捆绑软件中的选项,这几乎为您提供了即时的加载时间。 我可以使用该机制来做我想要的。 首先,我需要检查是否有下载的JS捆绑包,或者是否需要使用应用程序的捆绑包: //这是应用程序本身的文档目录。 NSString * documentDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)firstObject]; // filePath代表下载的包所在的位置。 它位于应用程序的documents目录中。 NSString * filePath = [documentDir stringByAppendingPathComponent:@” main-loaded.jsbundle”]; NSURL * codeLocation = [NSURL URLWithString:filePath]; //如果执行路径中没有文件,则使用应用程序包 如果(![[NSFileManager defaultManager] fileExistsAtPath:filePath]){ //加载应用程序包的javascript jsCodeLocation = [[NSBundle mainBundle] URLForResource:@“ main” withExtension:@“ jsbundle”]]; […]