Tag: cocoa触摸

可可触摸(WWDC 2017 Session 201)TL; DR中的新增功能

以下是WWDC 2017(会议201)的大部分“可可接触新功能”会议的快速回顾。 这都是现场输入的内容,因此,如果某些内容不正确,请随时纠正我。 生产率 拖放 通过创建UIDragInteraction(UIInteraction的子类)并将其附加到您希望具有Draggable的视图(并分配其委托),来启用Drag。 委托人提供拖动项目的数据,允许自定义“提升”动画并自定义draggin预览。 通过创建UIDropInteraction并以类似方式设置其委托来启用Drop。 委托允许在拖动移动时更新UI,接收拖放上的常规数据并自定义拖放动画。 开箱即用地支持许多UIKit元素-TableView,CollectionView,TextView,TextField和WebView。 文件管理 引入了新的文件资源管理器,该文件资源管理器允许在我们的应用程序中进行演示。 UIDoumentBrowserViewController是我们可以在应用程序中显示的ViewController。 它是高度可定制的,并允许访问设备内容,iCloud内容和外部云服务。 协调文件访问至关重要,因为我们不能指望我们的应用程序是唯一可以触摸某些文件/资产的应用程序。 可以通过使用NSFileCoordinator / UIDocument来完成。 用户界面优化 大标题导航栏可以具有内置的搜索栏,但是当您向上滚动内容时,搜索栏将随着大标题折叠为常规小标题而折叠,就像我们习惯于iOS 10。 在大多数情况下,这几乎可以自动完成,因为系统可以通过将UINavigationBar.prefersLargeTitle设置为true来自动处理它。 您还可以使用UINavigationItem.largeTitleDisplayMode来围绕导航级别以更精细的方式控制大标题显示模式。 通过设置UINavigationBar.searchBarController启用统一搜索栏。 通常,导航控制器/堆栈中的顶部控制器将是唯一使用“大型”样式标题的控制器,而内部控制器应使用标准的小变化。 导航栏中有一个内置的Pull-to-refresh,看起来很棒。 我们不能一直指望导航栏的静态高度,因为它可能会更改不同内容类型的高度。 在大多数情况下,这将由各种UINavigation类自动处理。 UIView上有一个新的safeAreaInsets.top属性,我们可以准确而可靠地使用它来通过导航栏知道“模糊”区域的大小。 还有一个底线值。 ( safeAreaInsets.bottom ) 您也可以使用safeAreaLayoutGuide 。 对于手动布局,您可以手动阅读safeAreaInsets并订阅安全区域大小的更改。 现在, UINavigationController不再像使用安全插入一样控制插入值,因此在Scroll View上设置手动插入应该不再像以前那样费时了。 UIScrollView具有称为contentInsetAdjustmentBehavior和contentInsetAdjustmentBehavior新属性,可用于手动定义插图在UIScrollView上的行为。 UITableViewCell现在支持使用新的UIContextualAction类在左侧和右侧进行内置的滑动操作。 看起来与UITableRowAction工作原理类似,但是更加精致,因为您可以单独使用UISwipeActionsConfiguration对这些UIContextualAction进行分组。 UITableView上有一个新的属性,称为“ separatorInsetReference ,可让您设置插图的值是绝对值还是“增量”,例如,在引用中,插图将是以前的插图。 斯威夫特4和基金会 归档Swift本机类型 新的Codable协议允许更轻松地“存档”和“取消存档”,并且默认情况下允许他们参与NSCoding。 关键路径 新的KeyPath类型具有用于文字语法的选项(例如\Object.path.subPath ),因此您可以动态创建一个密钥路径,然后使用collection[keyPath: someKeyPath] 。 使用object.obserer(keyPath) { […]

尝试查看.xcdatamodel时,XCode崩溃

我有一个由Core Data支持的应用程序,我已经工作了一段时间。 我使用版本控制(以前的SVN,现在是Git)在不同的Mac之间移动它。 前几天,我无法打开这个项目。 OH CRAP。 幸运的是,由于Time Machine,我能够及时回归,并恢复到早期版本。 我怀疑XCode项目文件或核心数据文件的某些东西在这里发挥作用(我遇到了这个人做过的一些问题,我猜),但是一切似乎都在工作,所以我继续前进。 但是现在,我意识到当我尝试在XCode中打开.xcdatamodel文件时,我不能。 它只是挂起然后我结束强制戒烟。 除此之外,该应用程序完全正常。 我可以将它部署到模拟器或设备,它的工作原理。 但我不知道我对编辑有什么希望。 我可以做些什么来解决这个问题?

NSUrlRequest:应用程序可以在哪里找到HTTP请求的默认标头?

有人知道iOS应用程序可以看到NSUrlRequest为HTTP请求设置的默认标头吗? 只需使用“http:// ..” NSURL创建NSUrlRequest ,然后询问: [request allHTTPHeaderFields]返回一个空字典。 但我知道例如“Accept-Encoding”设置为“gzip” 。 所以我希望得到所有这些字段并在HTTP请求演示中显示它们。 我也试图[NSMutableURLRequest setValue:forHTTPHeaderField:] ,但它似乎没有被底层API(NSURLRequest或NSURLConnection)用来设置我正在寻找的那些默认字段。 我正在制作一个简单的iOS演示,其中显示了HTTP请求和响应信息,因此如果它是用于此的公共或私有API并不重要。

StatusBar在iOS7中的错误?

我已经被苹果正在制作状态栏覆盖viewController …或者我的应用程序的界限的事实。 有什么方法可以将StoryBoard中的TitleBar向下移动? 还是我不得不猜猜在哪里放置它? 我很困惑该怎么做,现在iOS7已经到来了。 这是我在应用程序和故事板中的TitleBar: 和: 我该怎么做这个工作? 这是我希望它看起来像没有绿色,但黑色。 我什至试过这个post,但没有任何帮助。 iOS 7 – 调整状态栏

Swift:cellForRowAtIndexPath不按indexPaths的顺序调用

首先,indexpath按照0,1,2 …的顺序调用,但是在点击table view之后,func tablview被调用,其索引path似乎是完全随机的,因此我无法重现相同的数据。 我正在使用数组关联表的行。 代码在这里: // MARK: – Table view data source override func numberOfSectionsInTableView(tableView: UITableView!) -> Int { // #warning Potentially incomplete method implementation. // Return the number of sections. return 1 } override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int { // #warning Incomplete method implementation. // Return the number of […]

如果同时触发滑动手势和后退button,则导航栏会变得时髦

今天我们的一个testing人员告诉我,如果他按下导航栏的后退button的同时向后滑动,则会在导航栏中创build一个非常有趣的行为: 如果我们在第三个视图控制器上,并执行此操作比返回顶部,再次进入一个级别,并在大多数情况下单击后退button导航栏不会消失,如果它应该,或者它可能不会animation。 或者不在更深层次上出现。 或者取消激活后退button,尽pipe不在顶部视图控制器中。 有时这些消息被打印到控制台: 完成处于意外状态的导航转换。 导航栏子视图树可能会损坏。 事实certificate,它必须在苹果类,因为我能够用简单的课程重现它。 代码在GitHub上 。 您将不得不在手机上运行应用程序来一次执行手势和button点击。 我也准备了一个video 。 我如何解决它?

JSON对NSObject数据模型的表示

我正试图parsing我的数据模型中填充的所有数据。 在nsobject中我有一些nsmutabledictionary,只是好奇是否有可能获得该对象types的jsonrepresentation? 我使用ASIHTTPREQUEST得到了无效的JSONtypes。 所以这里显而易见的问题是,如果这是可能的,或者我必须遍历对象的,并在nsdictionary中插入,然后parsing它? 谢谢

UITableView不呈现

所以我有一个UITableView作为接口生成器中另一个视图的子视图,而不是渲染。 我已经检查过,section方法的返回数是1,并且section方法中的行数返回一个大于0的数。 这是我的代码 – – (void)viewDidLoad{ //[super viewDidLoad]; _trendingImageView.image = [UIImage imageNamed:@"trending.png"]; [self.scrollView setScrollEnabled:YES]; [self.scrollView setClipsToBounds:YES]; self.scrollView.delegate = self; UINib *nib = [UINib nibWithNibName:@"RecommendationCell" bundle:nil]; [self.recommendationsTableView registerNib:nib forCellReuseIdentifier: reco recommendationCellIdentifier]; self.recommendationsTableView.scrollEnabled = YES; } -(void)executeRecSearch{ @try{ [AJAXUtils getAsyncJsonWithUrl:(NSURL *)[NSURL URLWithString:[NSString stringWithFormat:someUrl]] callback:^(NSDictionary *returnjson){ if(returnjson != nil){ self.recommendations = returnjson[@"Node"][@"Recommendations"][@"Components"]; NSLog(@"COUNT: %d", [self.recommendations count]); [self performSelectorOnMainThread:@selector(renderRecommendations) […]

属性名前面的下划线,在setter中

我写了一个setter方法 – – (void)setMyProp:(MyProp *)myProp{ _myProp = myProp; } 在属性名称工作之前,下划线如何放置? 我知道这个问题已经被问到,但他们是关于用户设置属性名称为_myProp,一些约定。 我不合成或更改属性名称。 这个下划线是如何工作的?

为后台播放streamaudio播放器

目前,我正在开发一个需要播放stream媒体audio的应用程序。 我正在使用mpmovieplayercontroller来播放streamaudio。 它对我来说工作得很好。 但是,当设备进入睡眠模式或进入后台模式时,audio正在停止。 我也想在这两种模式下播放audio。 如何在这两种模式下播放stream式audio? 我也向另一位玩家开放。