使用ipad编程

  • 时间:
  • 浏览:894
  • 来源:成都艾邦软件开发

iPad编程

1. iPad

   现有型号

   iPad Pro, iPad Air, iPad mini 均配备Retina显示屏。早期还有iPad

   依次对应的坐标系及分辨率

   iPad Pro 坐标系1366 x 1024  分辨率2732 x 2048

   iPad Air  坐标系1024 x 768分辨率2048 x 1536

   iPad mini  坐标系1024 x 768分辨率2048 x 1536

   开发过程中图片可只设计2048 x 1536 分辨率下的。根据实际情况也可选择1024x1536分辨率。

2. iPad 与iPhone编程的区别

屏幕尺寸分辨率不同

iPhone640x960,640x1136……

iPad : 2048x1536 

UI元素的布局

iPad屏幕比iPhone大可容纳显示更多的UI元素两者的排列方式略有不同.

例如 在iPhone中使用的UITabBarController分栏控制器虽然在iPad下也可以使用但一般情况下考虑到用户体验不会使用在页面下方显示分栏菜单的方式而是使用在左侧显示竖向的分栏菜单实现这种效果需借助与第三方库当然也可以自己封装。

[扩展] 第三方库实现竖向分栏控制器 FSVerticalTabBarController

/futuresimple/FSVerticalTabBarController

此库实现了一个类似iOS原生UITabBarController的分栏效果只不过是竖向的。

[*扩展*] 对于iPhone下的分栏控制器若要显示不规则尺寸的tabBarItem则需要自定义实现例如某个分栏的尺寸比其他的分栏都大特别是中间的凸出效果的。

可参考/ios/自定义不规则TabBar/51886eee6803faf053000003

键盘

iPad的虚拟键盘右下角多了个退出键盘的按钮

iPad特有的类

UIPopoverController 弹出控制器

UISplitViewController 主从视图控制器自iOS8开始此类也可以在iPhone应用中使用

部分共有API的差异

同样的类在iPhone和iPad上的显示效果会略有不同但大部分还是一致的。

屏幕方向的支持

在创建工程后在info.plist中查看会发现iPhone下支持三种方向而iPad下支持四种方向。

横竖屏支持建议

一般情况下iPhone应用支持一种屏幕方向即可竖屏 or 横屏。

iPad应用最好支持横屏竖屏两种方向也是官方建议。但不强制根据实际开发业务需求选择。

工程运行设备选择

在创建工程时会有Device选择有三个值

Universal  通用 iPhone iPad的都可运行

iPhone

iPad

若选择iPhone也仍然要考虑在iPad上运行是否正常。苹果官方其中一条审核规则在iPhone上运行的应用必须同样也能在iPad上可运行正常。一般就选择Universal。

若应用只在iPad上运行则选择iPad.

开发流程

iPhone与iPad的开发流程是一致的在 iPhone上所学的所有知识基本都可以应用在iPad上。 

3. UISplitViewController

  主-从(master-detail)容器视图控制器。在此界面中在主视图控制器上的改变会驱动从视图控制器的内容改变这两个视图控制器是并列显示的。常应用于iPad 应用中一般作为window的根视图控制器rootViewController。自iOS8开始此类也可以在iPhone应用中使用

   纯代码方式实现

   注意在删除Main.storyboard文件后需要在info.plist中将 Main storyboard file base name 项删除否则程序崩溃报错提示找不到Main....

   初始化

[[UISplitViewController alloc] init]

   设置主从视图控制器

splitViewController.viewControllers [masterViewController,detailViewController];

该属性包含两个视图控制器第一个是主视图控制器第二个是详细从视图控制器

  设置显示模式

   splitViewController.preferredDisplayMode 

值如下

UISplitViewControllerDisplayModeAutomatic,// 自动模式自行根据设备尺寸决定合适的显示方式

UISplitViewControllerDisplayModePrimaryHidden, // 主视图控制器隐藏

UISplitViewControllerDisplayModeAllVisible,// 主从视图控制器并列显示

UISplitViewControllerDisplayModePrimaryOverlay // 主视图控制器覆盖在从视图控制器上显示

获取显示模式

splitViewController.displayMode// 注意只能获取到上述四值中的后三种

   设置主视图控制器的显示尺寸比例

splitViewController.preferredPrimaryColumnWidthFraction // 注意此属性的值范围在0.01.0区间如0.2 表示主视图控制器在splitViewController中所占的显示比例为20%。

获取主视图控制器的显示尺寸点数

splitViewController.primaryColumnWidth 

   显示指定的从视图控制器一般在主视图控制器点击后触发

[splitViewController showDetailViewController: sender:]

其中参数一表示要显示的从视图控制器参数二表示是哪个视图或视图控制器产生的此请求

   显示指定的主视图控制器

[splitViewController showViewController: sender:]

参数一表示要显示的主视图控制器参数二表示由哪个对象请求显示

     设置是否将一个隐藏的视图控制器通过轻扫手势显示或隐藏

splitViewController.presentsWithGesture

注意只有在有隐藏视图控制器时有效

4. UIPopoverController

弹出控制器以悬浮框的形式模态展现一个视图控制器的内容。

此类自iOS9被弃用popover的效果通过视图控制器模态跳转方式实现指定跳转的视图控制器的 modal presentation style 为 UIModalPresentationPopover, 且配合UIPopoverPresentationController的相关属性设置。

- iOS9之前popover实现UIPopoverController的使用

准备弹出视图的控制器并初始化UIPopoverController

[ [UIPopoverController alloc] initWithContentViewController: ]

在指定的某一块特定区域弹出显示

[popoverController presentPopoverFromRect: inView: permittedArrowDirections: animated: ];

参数一 指定的矩形框箭头所指范围以参数二view的左上角为坐标原点

参数二 参数一的坐标原点的相对view

参数三 箭头方向: 决定了弹出视图的方向若在指定方向上空间不够则会导致弹出视图的尺寸无效

参数四 是否动画显示

其中参数一二的设置效果如下

若在使用了导航条的视图中要在导航条左侧或右侧按钮点击后显示popover效果则可使用以下方法

popoverController presentPopoverFromBarButtonItem: permittedArrowDirections: animated: ]

设置背景颜色最好设置的与弹出内容背景颜色一致默认的是白色

popoverController.backgroundColor

设置弹出内容的尺寸

[popoverController setPopoverContentSize: ];

但一般不建议使用此方式设置弹出视图的尺寸其尺寸应该由内容视图决定应在弹出视图的控制器中设置 preferredContentSize 属性

- iOS9 popover实现

准备弹出视图的控制器并设置其模态弹出方式

contentVC.modalPresentationStyle UIModalPresentationPopover; // 指定模态弹出窗的样式

[扩展补充] contentVC.modalTransitionStyle  // 模态窗口显示时的动画

设置弹出视图控制器的弹出属性

// 箭头所指区域的坐标原点的相对视图

contentVC.popoverPresentationController.sourceView self.view;

// 箭头所指区域尺寸

contentVC.popoverPresentationController.sourceRect uv.frame;

// 弹出视图的背景色

contentVC.popoverPresentationController.backgroundColor [UIColor redColor];

// 箭头方向

contentVC.popoverPresentationController.permittedArrowDirections UIPopoverArrowDirectionUp;

// 模态方式弹出视图

[self presentViewController:contentVC animated:YES completion:nil];

前言

本文主要参考haoen110博主的搭建数据科学虚拟机(DSVM)远程玩转数据远程使用ipad来写Python根据自身遇到的一些状况进行部分补充说明。

第一步的补充

首先需要注意的是在其文的第一步创建JSON参数文件时密码的设置是有格式要求的

  1. 长度必须在6-27个字符之间
  2. 必须满足以下条件中的三个
    2.1. 含有一个大写字母
    2.2. 含有一个小写字母
    2.3. 含有一个数字
    2.4. 含有一个特殊字符
    2.5. 不能有控制字符

第二步的排错

其次就是第二步中挑选服务器时如果和原博主选的服务器一样会出现下图错误

解决的方法也很简单换一个服务器就行了当然如果想用回当前资源组的名字就得用az group delete --resource-group learn-ds-dsvm先删除该资源组再换一个服务器重新创建。

PS这里会提示group deployment快要过时了让你用deployment group代替不过至少截止该文章原命令还是可以正常使用。

最后的一些注意点

在第五步中在命令行输入ssh USERNAMEIP其中的USERNAME显然就是你最初在文件中设置的用户名而IP就是第三步要记下的PublicIps。HOSTNAME就是自己设置的主机名如果和原博主一样就一直是dsvm。
再啰嗦一下就是输入jupyter notebook --ip0.0.0.0 --no-browser --allow-root后的网址应该是类似这个样子http://(dsvm or 127.0.0.1):8888/?tokenaaaaaaaaaaaaaaaaaaaaaaaaatoken后面是一堆乱码此处用aaa代替拿之前的PublicIps代替(dsvm or 127.0.0.1)就可以在任何浏览器调出Jupyter Notebook了。
最后附上CLI的语法说明遇到其他的问题可以根据是哪条指令出错了在这里找到指令的具体解释最终解决问题。