Tag: uikit

如何在Swift中编写UIViewController的init方法

我无法将init方法添加到以下UIViewController类。 我需要在init方法中编写一些代码。 我必须编写init(编码器)方法吗? 即使当我添加编码器和解码器的方法,我仍然得到错误。 我也尝试使用init方法,但没有任何参数,但似乎也没有工作。 class ViewController: UIViewController { var tap: UITapGestureRecognizer? override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) { super.init(nibName: nil, bundle: nil) tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:")) } … … } 如果我没有参数调用super.init()方法的错误是“必须调用超类的指定初始化”,如果我传递参数nib和捆绑,那么错误是“必需的初始化init(编码器)”。 即使当我添加init(编码器)和init(解码器),它不起作用。

UICollectionView横向滚动,删除最后一项,animation不能正常工作

我有一个UICollectionView。 它水平滚动,只有一行项目,行为像一个分页UIScrollView。 我正在沿着Safari标签页select器的东西做一些东西,所以你仍然可以看到每个项目的边缘。 我只有一个部分。 如果我删除不是最后一个项目的项目,一切都按预期工作,一个新项目从右侧滑入。 如果我删除最后一个项目,那么集合视图的滚动位置跳转到第N-1个项目(不平滑地animation),然后我看到第N个项目(我删除的那个)淡出。 此行为与我所做的自定义布局无关,因为即使将其切换为使用普通stream布局,也会发生此行为。 我正在删除项目使用: [self.tabCollectionView deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]]; 有没有人经历过这个? 这是在UICollectionView中的错误,是否有一个解决方法?

以编程方式创buildUITableViewCell或从笔尖加载UITableViewCell更快吗?

时间剖析器显示最耗时的操作在我的应用程序从nib文件加载UITableViewCells 。 其中最昂贵的包括加载一个4KB图像的UITableViewCell 。 我使用下面的代码从nib加载UITableViewCell : [[NSBundle mainBundle] loadNibNamed:@"UITableViewCellPortrait" owner:self options:NULL]; cell = portraitCell; self.portraitCell = nil; 有没有人比较创build一个视图编程或从一个笔尖加载UITableViewCell的区别? 编辑: 我比较了从一个nib加载UITableViewCell重复运行的时间轮廓,并以编程方式创build视图。 我的testing涉及在3-5秒的时间间隔内交替两次UITableViews 10次​​。 在每个testing中,以编程方式加载UITableViewCell速度要快得多,速度要快两倍到六倍。 任何人都可以证实这些结果吗? 编辑:我更新了笔尖加载代码只加载一次笔尖文件,并使用caching版本的后续调用。 if (self.UITableViewPortaitNib == nil) { self.UITableViewPortaitNib = [UINib nibWithNibName:@"UITableViewCellPortrait" bundle:[NSBundle mainBundle]]; } self.UITableViewPortaitNib instantiateWithOwner:self options:NULL]; cell = portraitCell; self.portraitCell = nil; 我还使用自动化工具来创build更一致的运行,结果仍然暗示以编程方式加载UITableViewCells比加载用于笔尖的UITableViewCells更快。 从nib加载UITableViewCells的平均运行时间约为90ms,而以编程方式创buildUITableViewCell的平均运行时间为50ms。

如何改变UISegmentedControl的圆angular半径?

是否有可能改变UISegmentedControl的圆angular半径? 我尝试了下面的方法来改变UIView的圆angular半径。 self.segmentedControl.layer.cornerRadius = 15.0; self.segmentedControl.layer.masksToBounds = YES; 这不起作用,因为你可以看到它只是切断了UISegmentedControl的angular落。 谢谢!

UIVIEW和CALayer关于iOS背景图片的关系

试图了解UIView和CALayer之间的关系。 我读过苹果文档,但没有详细描述两者之间的关系。 为什么当我添加背景图像来查看“customViewController.view”,我得到了图像不需要的黑色。 而当我添加背景图像到图层“customViewController.view.layer”,图像的黑色区域消失(这是我想要的),但背景图像翻转颠倒。 这是为什么? 如果我要添加标签/视图/button/等。 到视图,图层的背景图像会阻止它们,因为CAlayer是由UIView支持的? 当你设置UIView的背景颜色时,它会自动设置相关图层的背景颜色? – (void)viewDidLoad { [super viewDidLoad]; customViewController = [[CustomViewController alloc] init]; customViewController.view.frame = CGRectMake(213, 300, 355, 315); customViewController.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"login_background.png"]]; // customViewController.view.layer.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"login_background.png"]].CGColor; [self.view addSubview:customViewController.view]; } 背景图像: – (void)viewDidLoad { [super viewDidLoad]; customViewController = [[CustomViewController alloc] init]; customViewController.view.frame = CGRectMake(213, 300, […]

Firebase:何时在swift中调用removeObserverWithHandle

文档说你需要调用observeEventType:withBlock去除观察者,如果你不再需要它。 我在ViewDidDisAppear看过样本。 我也发现一些Obj-C代码在deinit调用了这个方法,这在Swift中是不需要的。 然而,在我的简单应用程序中,只要我在应用程序中,我想要同步数据。 如果是这种情况,我是否必须调用observeEventType:withBlock ? 我检查了Firebase网站上的Chat-Swift示例代码,但未findobserveEventType:withBlock 。 这是否意味着不要调用observeEventType:withBlock 如果我希望观察者在应用程序正在使用时开启? 谢谢。 UPDATE 感谢Jay和David。 我发现在ViewWillAppear中观察并在ViewDidDisappear中删除它是有意义的。 但是,我正在使用observeEventType来监视节点的任何值更改,并会更新UI(如果有)。 如果我把它放在ViewWillAppear中: override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) ref.observeEventType(.Value, withBlock: { snap in { // **update UI if there is any Value change** }) } 把它放在viewWillAppear的问题是,每次出现视图时都会调用它,而不pipe值是否改变。 因此,下载快照,每当我返回到视图时,我的用户界面都会刷新。 这变得适得其反。 我也尝试了ChildAdded / ChildRemoved ,但是,它只返回最后一个节点,而不是从我的ref的path: 例如,如果我添加到ref / child1 / ChildAdded / child3 /值, ChildAdded只会返回child3 […]

写入文件时尝试encryptionNSDictionary

我正在保存一个NSDictionary文件在iOS设备上。 但是,NSDictionary文件是可读的XML。 我不希望人们能够进入和阅读内容,所以我需要能够在写入时encryption文件并在再次加载时解密。 我目前正在保存这样的文件: NSFileManager* fileManager = [NSFileManager defaultManager]; if (!fileManager) { NSLog(@"Failed to get file manager to save."); return; } NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString* documentsDirectory = [paths objectAtIndex:0]; NSString* filePath = [documentsDirectory stringByAppendingPathComponent:@"save.dic"]; [m_dictionary writeToFile:filePath atomically:YES]; 我正在像这样加载字典: NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString* documentsDirectory = [paths objectAtIndex:0]; NSString* filePath = […]

什么时候应该使用UIImageJPEGRepresentation和UIImagePNGRepresentation上传不同的图像格式到服务器?

在我的应用程序中,我必须发送不同格式的图像到服务器(它必须是UIImage类可以读取的所有文件格式) https://developer.apple.com/library/ios/#documentation/uikit/reference /UIImage_Class/Reference/Reference.html 问题是:我不知道什么时候应该使用这些方法。 当然很明显,对于.png图像,我需要使用UIImagePNGRepresentation和.jpg/.jpeg UIImageJPEGRepresentation 。 但是其他格式( .tiff , .gif等)呢? 只有两种image processing方法和多种格式。

如何检测UICollectionView中单元格的双击

我想要对UICollectionView中的单元格进行双击,并有一个双击动作取消单元格select。 这是我试过的: UITapGestureRecognizer *tapRecogniser = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)]; tapRecogniser.numberOfTapsRequired = 2; for (UITapGestureRecognizer *recogniser in [self.collectionView gestureRecognizers]) { [recogniser requireGestureRecognizerToFail:tapRecogniser]; } [self.collectionView addGestureRecognizer:tapRecogniser]; 也就是说,如果我的双击手势识别器成功,我试图让默认的手势识别器失败。 这似乎不工作,因为我的集合视图委托的collectionView:didSelectItemAtIndexPath:仍然被调用后,双击 请注意Apple的UICollectionViewController文档 苹果公司的文档在这一点上是误导性的,声称默认的手势识别器是UITapGestureRecognizer子类的一个实例,所以它可以很容易地用[recogniser isKindOfClass:[UITapGestureRecognizer class]]来挑选出来。 不幸的是,这是一个错误。

在iOS中的三维文字效果

我想在我的一个屏幕上渲染一些文字,看起来像是3DISH。 我正在使用UIKit和标准视图控制器等 效果看起来像这样: 这可以用UIKit和iOS以某种方式完成吗? 通常我只是使用一个静态PNG,然而,文本是dynamic的,并基于用户数据更新