我正在开发一个小型的collectionview'框架',就像iPad上的浏览器标签栏(想想chrome)一样.代码全部完成,自定义流程布局,重新排序等,并按如下方式组织:
•TabBarCollectionViewController .h/.m/.xib包含集合视图的高逻辑(委托+数据源方法).我有xib来配置collectionView设置并设置自定义流布局(我可以通过编程方式执行此操作,但是哦,这样更容易).
•CustomFlowLayout .h/.m(流布局的子类)
•TabBarCell .h/.m/.xib(collectionviewcell的子类)
然后我在我的主viewController上添加TabBarCVC作为childViewController(这个viewController有很多childViewController和子视图),然后作为子视图.在这一点上,一切都在起作用.
现在问题,它是如此愚蠢我不敢相信我还没有找到办法做到这一点,collectionView的backgroundColor不能设置为clearColor.我可以把它放在灰色或任何颜色,但它不支持透明度.细胞背景颜色也很清晰,确实有效.
我需要collectionView是透明的,以显示后面主视图上的纹理.任何洞察都会非常感激,或者我可能会将我的第一个雷达填满苹果.
如果我找不到任何解决方案,我只需添加应该在collectionView后面的纹理的"屏幕截图",并将其添加为collectionView的backgroundView中的imageView.
嗨其他开发者,
我很惊讶我没有找到关于iOS 8特定用例的任何信息.让我解释一下,我有一个导航控制器堆栈,第一个视图隐藏了它的navigationBar,当用户点击一个单元格的新视图时被推,我需要这个视图上显示的导航栏返回(显然).在iOS 7上,只需在viewWillAppear中添加此行:
[self.navigationController setNavigationBarHidden:NO animated:YES];
Run Code Online (Sandbox Code Playgroud)
它就像一个魅力.但是从iOS 8开始,我很难有同样的行为.现在我设法通过使用:
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
[self.navigationController setNavigationBarHidden:NO animated:NO];
}
- (void)viewDidLoad {
[super viewDidLoad];
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")) {
self.automaticallyAdjustsScrollViewInsets = NO;
self.edgesForExtendedLayout = UIRectEdgeNone;
self.collectionView.contentInset = UIEdgeInsetsMake(self.navigationController.navigationBar.frame.size.height, 0, 0, 0);
} }
Run Code Online (Sandbox Code Playgroud)
并更改我需要显示的collectionsView/tableviews的contentInset.它会起作用,但它在*中是一个真正的痛苦(如果用户来自新的viewcontroller,有时内容插入是不必要的).
对于上下文,项目最初是为处理iOS 6和7而开发的,所以没有故事板,所有都是以编程方式完成的.我将应用程序移植到更现代的代码库中并使其具有通用性.
我错过了什么吗?在iOS 7/8中有更好的方法来处理它吗?
我的目标很简单,我有一个存储本地化货币值的文本字段(例如$ 1,000.00),我需要从文本字段中取回该值作为浮点数来对文本字段执行某些测试.
代码非常简单,首先我将NSNumber格式化为localizedString,如下所示:
NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
formatter.locale = [NSLocale currentLocale];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
textfield.text = [formatter stringFromNumber:number];
Run Code Online (Sandbox Code Playgroud)
一切正常,但我做相反的事情从这个本地化的字符串得到doubleValue:
NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
formatter.locale = [NSLocale currentLocale];
formatter.numberStyle = NSNumberFormatterCurrencyStyle; //also tested with NSNumberFormatterDecimalStyle
double d = [formatter numberFromString:textfield.text].doubleValue;
Run Code Online (Sandbox Code Playgroud)
问题是格式化程序只返回我的字符串的整数值而不是小数,更糟糕的是,如果它是加拿大本地化字符串(20 000,00 $),它只返回20.
我一直在寻找一段时间,但却找不到任何关于这种行为的信息.解决方法当然是在将NSNumber格式化之前存储到文本字段然后测试这个nsnumber,但我真的不觉得它很漂亮.