Tag: uikit

UIActionSheet从子视图控制器显示iPad崩溃

我很抱歉,如果这已被问,但我似乎无法find任何地方。 我甚至在一个演示项目中重新创build了我的问题,以防你想亲眼看到它,尽pipe我不知道应该在哪里发布。 我有一个xibless基于UINavigationController的应用程序。 我的一些子ViewControllers在顶部右侧有一个button,然后显示一个UIActionSheet。 我的应用程序专为iPhone和iPaddevise,所以当我准备好显示UIActionSheet时: UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:[NSString stringWithFormat:@"%@ Menu", [self title]] delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Email", @"Print", nil]; [actionSheet setActionSheetStyle:UIActionSheetStyleDefault]; if ([actionSheet respondsToSelector:@selector(showFromBarButtonItem:animated:)]) [actionSheet showFromBarButtonItem:[[self navigationItem] rightBarButtonItem] animated:YES]; else [actionSheet showInView:[self view]]; [actionSheet release]; 在iPad上,我试图显示UIActionSheet附加到正确的栏button,并在iPhone上它应该从底部滑入。 所有这些都很好用。 不幸的是,如果你点击button,并在iPad上显示菜单,但点击应用程序左上angular的后退button,菜单不会消失。 相反,UINavigationController尽职尽责地popup,UIActionSheet仍然在那里。 如果你尝试点击菜单上的东西,你当然会崩溃。 如果用户在屏幕上点击了其他任何东西而不是“后退”button,则菜单会正常closures。 如果你在iPhone上试用这个testing,一切都按预期工作。 没有问题。 我的演示项目有一个AppDelegate和一个ViewController,这是关于它。 AppDelegate生成一个NSDictionary的NSDictionary,所以我有一个模型,我可以通过演示这个问题。 ViewController显示字典的所有关键字,如果相应的值是一个NSDictionary,您可以点击它来深入查看。

裁剪UIImage(CoreGraphics,iOS)时的性能问题

我们要做的事情的基本思想是我们有一个大的UIImage,我们想把它分成几块。 该函数的用户可以传递多行和多列,并且图像将被相应地裁剪(即,3行和3列将图像分割成9个)。 问题是,我们遇到性能问题,当试图用CoreGraphics完成这个。 我们需要的最大网格是5×5,完成操作需要几秒钟的时间(注册为用户的滞后时间),这当然远非最佳。 我和我的同事在这方面花了一段时间,并且在网上search失败的答案。 我们都不是非常有经验的核心graphics,所以我希望在代码中有一些愚蠢的错误,将解决我们的问题。 这是留给你,所以用户,请帮助我们搞清楚! 我们使用http://www.hive05.com/2008/11/crop-an-image-using-the-iphone-sdk/上的教程来修改我们的代码。 下面的function: -(void) getImagesFromImage:(UIImage*)image withRow:(NSInteger)rows withColumn:(NSInteger)columns { CGSize imageSize = image.size; CGFloat xPos = 0.0; CGFloat yPos = 0.0; CGFloat width = imageSize.width / columns; CGFloat height = imageSize.height / rows; int imageCounter = 0; //create a context to do our clipping in UIGraphicsBeginImageContext(CGSizeMake(width, height)); CGContextRef currentContext = […]

UICollectionView水平页面之间的空间分页

我正在寻找一种方法来取代UIPageViewController本地UIPageViewController水平分页。 到目前为止我做了以下几点: let layout = UICollectionViewFlowLayout() layout.scrollDirection = .horizontal layout.itemSize = collectionView.frame.size layout.minimumLineSpacing = 0 layout.minimumInteritemSpacing = 10 collectionView.setCollectionViewLayout(layout, animated: false) collectionView.isPagingEnabled = true collectionView.alwaysBounceVertical = false 这工作正常,我得到一个水平分页效果。 现在我想在页面之间添加水平空间(就像你将UIPageViewControllerOptionInterPageSpacingKey上的UIPageViewController ) 到目前为止,我不能罚款的方式来添加空间而不损坏分页效果。 即时通讯寻找与UIPageViewController相同的行为:单元格应填充整个屏幕宽度,单元格之间的空间应该只在切换页面时可见。

在Today-Extension中获取Notification-Center的宽度

我目前正在试图将一个CollectionView放在Today Extension中。 但有一件事困扰我。 我想实现每个单元格都适合我的collections视图中的一行。 所以计算细胞的宽度,取决于物品的数量。 一切工作正常在iPhone上,但在iPad上,它只是不正确。 单元格的宽度是很大的。 所以我debugging我的代码,似乎self.view.frame.width或self.view.bounds.width返回屏幕的整个宽度,而不是通知中心的宽度。 难怪为什么我的细胞很大。 我正在计算我的项目大小,如下所示: – (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { CGFloat count = (CGFloat)[self.collectionView numberOfItemsInSection:0]; return CGSizeMake(self.collectionView.frame.size.width/count, 80.0);; } 所以我现在的问题是,我怎样才能得到我的通知中心在iPad上的“真正的”宽度?

为什么UIViewController在主线程上解除分配?

我最近偶然发现了一些Objective-C代码中的Deallocation Problem 。 这个主题之前讨论过,在Block_release的 Stack Overflow 释放后台线程上的UI对象 。 我想我明白这个问题及其含义,但是确定我想在一个小testing项目中重现它。 我首先创build了我自己的SOUnsafeObject (=总是应该在主线程上解除分配的对象)。 @interface SOUnsafeObject : NSObject @property (strong) NSString *title; – (void)reloadDataInBackground; @end @implementation SOUnsafeObject – (void)reloadDataInBackground { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ dispatch_async(dispatch_get_main_queue(), ^{ self.title = @"Retrieved data"; }); sleep(3); }); } – (void)dealloc { NSAssert([NSThread isMainThread], @"Object should always be deallocated on the main thread"); } […]

iOS Core Graphics如何清除绘图

我正在关注我的涂鸦应用程序的教程。 http://www.raywenderlich.com/18840/how-to-make-a-simple-drawing-app-with-uikit 他的擦除function是使用白色的绘图。 但我正在使用图像背景,当我擦除时,我真的需要擦除。 我努力了 CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeClear); 但它不工作。 这是我的代码: – (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { _mouseSwiped = NO; UITouch *touch = [touches anyObject]; _lastPoint = [touch locationInView:self.tempImageView]; } – (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { _mouseSwiped = YES; UITouch *touch = [touches anyObject]; CGPoint currentPoint = [touch locationInView:self.tempImageView]; UIGraphicsBeginImageContext(self.tempImageView.frame.size); [self.tempImageView.image drawInRect:CGRectMake(0, 0, self.tempImageView.frame.size.width, self.tempImageView.frame.size.height)]; CGContextMoveToPoint(UIGraphicsGetCurrentContext(), _lastPoint.x, […]

iOS 7.1 UIModalPresentationCustom警告消息

由于我搬到了iOS 7.1,我不断收到我的每个自定义转换的警告消息。 如何摆脱这个: “UIModalPresentationCustom演示风格只能与animation师一起使用,也可以与无生气的解雇一起使用。”

XCode:以编程方式启用符号断点?

有没有办法以编程方式启用断点? 通常我会使用断点条件,但我需要使用符号断点。 具体来说,在scrollToIndexPath的调用和reloadData的调用之间,有些东西正在改变我的UIScrollView的contentOffset 。 我只想在调用scrollToIndexPath之后启用符号断点。

为什么在viewDidUnload中将nil分配给IBOutlet?

我有一个UIViewController有一个IBOutlet UILabel标签连接在XIB。 #import <Foundation/Foundation.h> @interface MyViewController : UIViewController { IBOutlet UILabel *aLabel; } @end 根据iOS编程:大书呆子牧场指南(第2版)第7章 当[MyViewController]重新加载其视图时,将从XIB文件创build一个新的UILabel实例。 因此,build议在viewDidUnload释放标签。 – (void)viewDidUnload { [super viewDidUnload]; [aLabel release]; aLabel = nil; } 作为一个C#程序员,我已经把它鼓起来了,把nil / null分配给事物是毫无意义的。 虽然我可以看到它在Objective-C中更有意义,但它仍然略微提高了我的代码审美感。 我删除它,一切工作正常。 但是,当我试图用MKMapView做类似的事情时,试图加载NIB的应用程序错误EXC_BAD_ACCESS 。 #import <Foundation/Foundation.h> @interface MyViewController : UIViewController { IBOutlet MKMapView *mapView; } @end – (void)viewDidUnload { [super viewDidUnload]; [mapView release]; mapView […]

Swift:尝试导入UIKit时出错

当我试图在我的swift文件中导入UIKit时,我得到了这个奇怪的错误。 我的代码很简单: import UIKit class Test: NSObject { } 我在'导入UIKit'得到的错误是: 未知types名称“导入” 预期';' 顶级声明之后 我已经将UIKit添加到我的Frameworks文件夹中,该类不包含任何代码(因此不应该有任何错误),我尝试重新启动xCode和我的Mac,但错误仍然存​​在。 我感谢任何帮助。 谢谢。 编辑:解决: 我试图在AppDelegate中导入“Test.swift”。