Questions tagged «ios»

iOS是在Apple iPhone,iPod touch和iPad上运行的移动操作系统。使用此标签[ios]来解决与iOS平台上的编程有关的问题。使用相关的标签[objective-c]和[swift]解决那些编程语言所特有的问题。

6
在iOS中检测相机的权限
我正在开发一个非常简单的视频应用程序。我使用官方控件:UIImagePickerController。 这是问题所在。首次显示UIImagePickerController时,iOS将请求权限。用户可以单击“是”或“否”。如果用户单击否,则不会关闭该控件。相反,如果用户一直单击“开始”按钮,则计时器将在屏幕始终为黑屏时继续运行,并且用户无法停止计时器或返回计时器。用户唯一能做的就是杀死该应用程序。下次呈现UIImagePickerController时,它仍然是黑屏,并且如果单击开始,则用户无法返回。 我想知道这是否是错误。有什么方法可以检测到摄像机的权限,以便我们决定是否显示UIImagePickerController?


7
仅当集合填充容器的高度时,UICollectionView上的UIRefreshControl才起作用
我试图将添加UIRefreshControl到UICollectionView,但问题是,刷新控制不会出现,除非集合视图填补了其父容器的高度。换句话说,除非收集视图足够长以至于需要滚动,否则无法将其下拉以显示刷新控制视图。一旦集合超过其父容器的高度,它将被下拉并显示刷新视图。 我已经建立了一个快速的iOS项目,该项目仅UICollectionView在主视图内部,并具有集合视图的出口,以便可以在中添加UIRefreshControl它viewDidLoad。还有一个带有重用标识符的原型单元cCell 这就是控制器中的所有代码,并且很好地演示了该问题。在此代码中,我将单元格的高度设置为100,这不足以填充显示,因此无法拉动视图,也不会显示刷新控件。将其设置为较高的值以填充显示,然后它可以工作。有任何想法吗? @interface ViewController () <UICollectionViewDelegateFlowLayout, UICollectionViewDataSource> @property (strong, nonatomic) IBOutlet UICollectionView *collectionView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init]; [self.collectionView addSubview:refreshControl]; } -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return 1; } -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return 1; } -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { …

8
iPhone UIView动画最佳做法
在iPhone上为视图过渡设置动画的最佳做法是什么? 例如,ViewTransitions苹果公司的示例项目使用如下代码: CATransition *applicationLoadViewIn = [CATransition animation]; [applicationLoadViewIn setDuration:1]; [applicationLoadViewIn setType:kCATransitionReveal]; [applicationLoadViewIn setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]]; [[myview layer] addAnimation:applicationLoadViewIn forKey:kCATransitionReveal]; 但是网上也有一些代码片段,看起来像这样: [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.75]; [UIView setAnimationDelegate:self]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:myview cache:YES]; [myview removeFromSuperview]; [UIView commitAnimations]; 最好的方法是什么?如果您还可以提供摘要,将不胜感激。 注意:我一直无法获得第二种方法才能正常工作。

6
在不使用导航控制器堆栈,子视图或模式控制器的情况下对视图控制器进行动画更改?
NavigationController具有ViewController堆栈来管理和有限的动画过渡。 将视图控制器作为子视图添加到现有视图控制器时,需要将事件传递给子视图控制器,这很麻烦,几乎没有烦恼,并且在实现时通常感觉很糟糕(Apple也建议不要这样做)。这样做)。 再次提供一个模态视图控制器,将一个视图控制器放在另一个之上,尽管它没有上述事件传递问题,但实际上并没有“交换”视图控制器,而是将其堆叠。 情节提要仅限于iOS 5,并且几乎是理想选择,但不能在所有项目中使用。 有人可以在没有上述限制的情况下以一种固体代码示例的方式更改视图控制器,并允许它们之间进行动画转换吗? 一个接近的示例,但没有动画: 如何在没有导航控制器的情况下使用多个iOS自定义视图控制器 编辑:导航控制器的使用很好,但是需要有动画过渡样式(不仅仅是滑动效果),显示的视图控制器需要完全交换(而不是堆叠)。如果第二个视图控制器必须从堆栈中删除另一个视图控制器,则它的封装程度不够。 编辑2:iOS 4应该是此问题的基本操作系统,我应该在提到情节提要(上)时澄清一下。

4
如何调整超级视图的大小以适合具有自动布局的所有子视图?
我对自动布局的理解是,它采用了超级视图的大小,并基于约束和内在大小来计算子视图的位置。 有没有办法扭转这个过程?我想根据约束和内在大小调整Superview的大小。最简单的方法是什么? 我在Xcode中设计了视图,并将其用作的标题UITableView。该视图包括标签和按钮。标签的大小取决于数据。根据约束,标签可以成功按下按钮,或者如果按钮和超级视图底部之间存在约束,则标签将被压缩。 我发现了一些类似的问题,但没有好的和简单的答案。

4
使用drawRect还是不使用drawRect(何时应该使用drawRect / Core Graphics与子视图/图像进行比较,为什么?)
为了阐明这个问题的目的:我知道如何使用两个子视图并使用drawRect创建复杂的视图。我正在尝试完全理解何时以及为什么要使用另一个。 我还了解到,提前进行大量优化并在执行任何性能分析之前以更困难的方式进行操作是没有意义的。考虑到我对这两种方法都比较满意,现在真的想加深了解。 我的很多困惑来自于学习如何使表格视图滚动性能真正变得平滑而又快速。当然,此方法的原始来源来自iPhone的twitter(以前为tweetie)背后的作者。基本上,它说的是使表格平滑地滚动,其秘密是不要使用子视图,而是在一个自定义uiview中进行所有绘制。从本质上讲,似乎使用大量子视图会减慢渲染速度,因为它们具有大量开销,并且会不断在其父视图上进行重新组合。 公平地讲,这是在3GS刚起步时才写的,而iDevices从那时起变得越来越快。仍然在互连网上和其他地方经常建议使用此方法来获得高性能表。实际上,这是Apple的Table Sample Code中建议的方法,一些WWDC视频(面向iOS开发人员的实用绘图)和许多iOS 编程书籍中都建议使用该方法。 甚至还有看起来很棒的工具来设计图形并为其生成Core Graphics代码。 因此,起初我会相信“存在Core Graphics的原因。它非常快!” 但是,一旦我想到“尽可能使用Favor Core Graphics”这个主意,我就开始发现drawRect通常是导致应用程序响应速度不佳的原因,这在内存方面非常昂贵,并且确实给CPU造成了负担。基本上,我应该“ 避免重写drawRect ”(WWDC 2012 iOS App性能:图形和动画) 所以我想,像所有事物一样,它很复杂。也许您可以帮助自己和其他人了解使用drawRect的时间和原因? 我看到使用Core Graphics的几种明显情况: 您拥有动态数据(Apple的股票图表示例) 您有一个灵活的UI元素,无法使用简单的可调整大小的图像来执行 您正在创建一个动态图形,该图形一旦渲染就会在多个地方使用 我看到了避免使用Core Graphics的情况: 视图的属性需要单独设置动画 您的视图层次结构相对较小,因此使用CG所付出的任何额外努力都不值得 您想要更新视图片段而不重绘整个内容 当父视图大小更改时,子视图的布局需要更新 因此,请赋予您的知识。在什么情况下可以获取drawRect / Core Graphics(也可以通过子视图完成)?哪些因素导致您做出该决定?建议如何/为什么在一个自定义视图中进行绘制以实现黄油状的平滑表格单元滚动,但是苹果出于性能考虑而建议不建议使用drawRect?那么简单的背景图像呢(何时使用CG与可调整大小的png图像创建它们)? 制作有价值的应用程序可能不需要对此主题有深入的了解,但是我不喜欢在无法解释原因的情况下在各种技术之间进行选择。我的脑子生我的气。 问题更新 感谢大家提供的信息。一些澄清的问题在这里: 如果您正在绘制带有核心图形的东西,但是可以使用UIImageViews和预渲染的png完成相同的事情,那么您是否应该始终遵循这种做法? 一个类似的问题:尤其是使用诸如此类的badass工具时,应何时考虑在核心图形中绘制界面元素?(可能在元素的显示是可变的时。例如,具有20种不同颜色变化的按钮。还有其他情况吗?) 根据我在下面的答案中的理解,是否可以通过在复杂的UIView渲染本身之后有效地捕获单元格的快照位图,并在滚动和隐藏复杂的视图时显示该位图,来获得相同的性能?显然,必须解决一些问题。我有一个有趣的想法。




20
具有动态单元格高度的UITableView的reloadData()导致跳跃式滚动
我觉得这可能是一个常见的问题,并且想知道是否有任何通用的解决方案。 基本上,我的UITableView具有每个单元格的动态单元格高度。如果我不在UITableView和I的顶部,则tableView.reloadData()向上滚动变得跳动。 我相信这是由于以下事实:当我向上滚动时重新加载数据时,UITableView正在重新计算每个可见单元的高度。如何缓解这种情况,或者如何仅将数据从某个IndexPath重新加载到UITableView的末尾? 此外,当我确实设法一直滚动到顶部时,我可以先向下再向上滚动,毫无问题。这很可能是因为已经计算了UITableViewCell的高度。

10
如何检查是否通过iPhone上的网页安装了应用程序?
我想创建一个网页,该页面将在iPhone未安装应用程序的情况下将iPhone重定向到应用程序商店,但是如果iPhone安装了应用程序,我希望它打开应用程序。 我已经在iPhone应用程序中实现了自定义网址,因此该应用程序的网址如下所示: myapp:// 如果此网址无效,我希望页面重定向到应用商店。这有可能吗? 如果我没有在手机上安装该应用程序,并在safari中编写myapp://网址,那么我得到的只是一条错误消息。 即使我真的很想知道使用JavaScript的丑陋骇客?

17
使用AVFoundation AVPlayer循环播放视频?
在AVFoundation中是否有相对简单的循环视频的方法? 我已经如下创建了我的AVPlayer和AVPlayerLayer: avPlayer = [[AVPlayer playerWithURL:videoUrl] retain]; avPlayerLayer = [[AVPlayerLayer playerLayerWithPlayer:avPlayer] retain]; avPlayerLayer.frame = contentView.layer.bounds; [contentView.layer addSublayer: avPlayerLayer]; 然后播放以下视频: [avPlayer play]; 视频播放正常,但在最后停止。使用MPMoviePlayerController,您所要做的就是将其repeatMode属性设置为正确的值。在AVPlayer上似乎没有类似的属性。似乎也没有回调可以告诉我电影何时结束,因此我可以寻找开始并再次播放。 我没有使用MPMoviePlayerController,因为它有一些严重的限制。我希望能够一次播放多个视频流。

8
Xcode / Simulator:如何运行旧版iOS?
我正在考虑升级到iOS SDK 4.2。但是我想知道的是,我是否仍然能够在iOS 3.2上运行模拟器。这是因为我正在为iPad创建iAd,但是我仍然想检查我的程序是否可以在iOS 3.2上运行。 注意:过去我看到过与此类似的帖子,但是它们对于给出具体的操作步骤并没有真正帮助。
142 ios  objective-c  iphone  xcode  ipad 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.