Questions tagged «ios»

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

12
iOS图像方向行为异常
在过去的几周中,我一直在用Objective-C处理图像,并注意到许多奇怪的行为。首先,和许多其他人一样,我一直遇到这个问题,即用相机拍摄的图像(或用别人的相机拍摄并发给我的彩信)旋转了90度。我不确定为什么在世界上发生这种情况(因此提出了我的问题),但是我能够提出一个廉价的解决方案。 我这次的问题是为什么会这样?苹果为什么要旋转图像?当我将相机正面朝上拍摄照片时,除非执行上述代码,否则在保存照片时会旋转保存。现在,我的解决方法在几天前还可以。 我的应用程序修改了图像的各个像素,特别是PNG的alpha通道(因此,对于我的方案,任何JPEG转换都被抛出窗口外)。几天前,我注意到,由于使用了变通方法代码,即使图像在我的应用程序中正确显示,当我的算法修改图像的各个像素时,它仍认为图像是旋转的。因此,它不会修改图像顶部的像素,而是会修改图像侧面的像素(因为它认为应该旋转像素)!我不知道如何旋转内存中的图像-理想情况下,我宁愿只擦除该imageOrientation标志。 这也让我感到困惑。当我拍摄照片时,将imageOrientation其设置为3。我的变通方法代码足够聪明,可以实现并翻转它,因此用户不会注意到。另外,我将图像保存到库中的代码实现了这一点,将其翻转然后保存,以使其正确显示在相机胶卷中。 该代码如下所示: NSData* pngdata = UIImagePNGRepresentation (self.workingImage); //PNG wrap UIImage* img = [self rotateImageAppropriately:[UIImage imageWithData:pngdata]]; UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil); 当我将此新保存的图像加载到我的应用程序中时,其imageOrientation值为0-正是我要查看的图像,甚至不需要运行旋转解决方法(请注意:从互联网加载图像而不是使用相机拍摄的图像时) ,imageOrientation则始终为0,从而获得完美的行为)。由于某种原因,我的保存代码似乎清除了此imageOrientation标志。我希望只是窃取该代码,并在用户拍摄照片并将其添加到应用程序后立即使用它擦除我的imageOrientation,但似乎不起作用。有UIImageWriteToSavedPhotosAlbum什么特别之处imageOrientation吗? 解决此问题的最佳方法是imageOrientation在用户完成拍摄图像后立即吹走。我认为苹果的旋转行为是有原因的,对吧?少数人认为这是苹果的缺陷。 (...如果您还没有迷路,请注意...)注2:当我拍摄水平照片时,一切似乎都可以正常工作,就像从互联网上拍摄的照片一样) 编辑: 这是一些实际的图像和场景。根据到目前为止的评论,看起来这种奇怪的行为不只是iPhone行为,我认为还不错。 这是我用手机拍摄的照片的图片(请注意正确的方向),它的外观与拍摄照片时在手机上的外观完全相同: 这是我通过电子邮件将图像发送给自己后在Gmail中的外观(看起来Gmail可以正确处理): 这是图像在Windows中作为缩略图的样子(看起来好像处理不当): 这是使用Windows Photo Viewer打开时的实际图像外观(仍然无法正确处理): 在对这个问题进行了所有评论之后,这就是我的想法... iPhone拍摄了一张图像,并说“要正确显示此图像,必须将其旋转90度”。此信息将在EXIF数据中。(我不知道为什么它需要旋转90度,而不是默认为笔直垂直)。从这里开始,Gmail足够智能,可以读取和分析该EXIF数据并正确显示。但是,Windows不够智能,无法读取EXIF数据,因此无法正确显示图像。我的假设正确吗?

9
文件Main.storyboard需要Xcode 8.0或更高版本
我下载了Xcode beta,并打开了现有项目,以了解它如何与Xcode 8 beta一起工作(我从Xcode 8中打开了Storyboard文件)。 现在,当我从Xcode 7.3打开项目时,无法打开情节提要文件,它给了我以下错误 此版本不支持以Xcode 8格式保存的文档。使用Xcode 8.0或更高版本打开此文档。 当我想继续使用Xcode 7时,应该做些什么来恢复原状。 在Xcode 8中,系统提示我选择设备,然后选择了iPhone 6S,我认为这部分原因是导致故事板文件无法在Xcode 7中打开

11
Swift 3-设备令牌现在被解析为“ 32BYTES”
我刚刚从Xcode 7更新到8 GM,并且在Swift 3兼容性问题中,我注意到我的设备令牌已停止工作。他们现在只读取'32BYTES'。 func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { print(deviceToken) // Prints '32BYTES' print(String(data: deviceToken , encoding: .utf8)) // Prints nil } 在更新之前,我可以简单地将NSData发送到服务器,但是现在我很难解析令牌。 我在这里想念什么? 编辑:我只是测试转换回NSData,我看到了预期的结果。所以现在我只是对新的数据类型感到困惑。 func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { print(deviceToken) // Prints '32BYTES' print(String(data: deviceToken , encoding: .utf8)) // Prints nil let d …
94 ios  swift  swift3 

7
以编程方式将iPhone键盘顶部的工具栏对齐
在某些情况下,我想在iPhone键盘的顶部添加一个工具栏(例如,在导航表单元素时,例如在iPhone Safari中)。 目前,我正在使用常量指定工具栏的矩形,但是由于界面的其他元素在变动中-屏幕顶部的工具栏和导航栏-每次我们进行较小的界面更改时,工具栏都会偏离对齐状态。 有没有办法以编程方式确定键盘相对于当前视图的位置?





8
如何在Swift中的UILabel中增加行距
我有一个文本行很少的标签,我想增加行间距。其他人也有类似的问题,但是解决方案不能解决我的问题。另外,我的标签可能包含也可能不包含段落。我是新来的Swift。有使用情节提要的解决方案吗?还是只能通过NSAttributedString其可能?

16
iOS 7-无法实例化默认视图控制器
我在一个新创建的应用程序中使用Xcode 5,当我刚创建它时,我点击运行按钮,然后建立了项目,但它未在iOS Simulator中显示,并且收到以下消息: Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set? 我已经在Google上进行了搜索,每个人都指出发生这种情况是因为XCode尚不知道哪个视图控制器是最初的视图控制器。但是奇怪的是,我将应用程序创建为基于页面的应用程序(也尝试过单视图和选项卡式应用程序选项),而XCode已经为其定义了一个Storyboard。 另外,当我转到项目的主界面选项时,将设置情节提要(由Xcode本身命名为“ Main”),并在情节提要中将我的视图控制器设置为“初始视图控制器”。 怎么了?



8
在Swift中使用谓词
我正在为我的第一个应用程序浏览本教程(学习Swift):http : //www.appcoda.com/search-bar-tutorial-ios7/ 我被困在这部分(Objective-C代码): - (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope { NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText]; searchResults = [recipes filteredArrayUsingPredicate:resultPredicate]; } 谁能建议如何在Swift中为NSPredicate创建等效项?

8
presentViewController:animated:YES视图将不会出现,直到用户再次轻按
我的出现了一些奇怪的行为presentViewController:animated:completion。我要做的本质上是一个猜谜游戏。 我有一个UIViewController包含UITableView(frequencyTableView)的(frequencyViewController)。当用户点击questionTableView中包含正确答案的行时,应实例化一个视图(correctViewController),并且其视图应从屏幕底部作为模式视图向上滑动。这告诉用户他们的答案正确,并重置其后面的frequencyViewController以准备下一个问题。按下按钮以显示下一个问题时,会关闭correctViewController。 每次都可以正常工作,只要presentViewController:animated:completion有has,即可立即显示正确的ViewController的视图animated:NO。 如果设置animated:YES,则会初始化correctViewController并调用viewDidLoad。但是viewWillAppear,不会调用viewDidAppear和的from的完成块presentViewController:animated:completion。该应用程序只是坐在那里,仍然显示frequencyViewController,直到我再次点击。现在,将调用viewWillAppear,viewDidAppear和完成块。 我进行了更多调查,不仅仅是让它继续下去的另一个水龙头。看来,如果我倾斜或摇动我的iPhone,这也可能导致它触发viewWillLoad等。这就像它在等待用户输入的其他任何内容之前,都会继续前进。这是在真实的iPhone上和模拟器中发生的,我通过将摇指令发送到模拟器来证明这一点。 我真的对此无所适从……我非常感谢任何人都可以提供的任何帮助。 谢谢 这是我的代码。很简单... 这是questionViewController中的代码,充当questionTableView的委托 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row != [self.frequencyModel currentFrequencyIndex]) { // If guess was wrong, then mark the selection as incorrect NSLog(@"Incorrect Guess: %@", [self.frequencyModel frequencyLabelAtIndex:(int)indexPath.row]); UITableViewCell *cell = [self.frequencyTableView cellForRowAtIndexPath:indexPath]; [cell setBackgroundColor:[UIColor colorWithRed:240/255.0f green:110/255.0f blue:103/255.0f alpha:1.0f]]; } else …

17
UICollectionView reloadData在iOS 7中无法正常运行
我一直在更新自己的应用程序,使其可以在iOS 7上正常运行。我已经在多个应用程序中注意到reloadData,a 的方法UICollectionViewController并不像以前那样起作用。 我将正常加载UICollectionViewController,并填充UICollectionView一些数据。这在第一时间效果很好。但是,如果我请求新数据(填充UICollectionViewDataSource),然后调用reloadData,它将为numberOfItemsInSection和查询数据源numberOfSectionsInCollectionView,但似乎调用cellForItemAtIndexPath的次数不正确。 如果我更改代码以仅重新加载一个部分,则它将正常运行。对我来说,更改这些没有问题,但是我认为我不必这样做。reloadData应该根据文档重新加载所有可见的单元格。 其他人看到了吗?

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.