我正在使用UICollectionView在主视图中生成多个缩略图.
这工作正常,我能够在单元格周围放置边框以及应用边框(角落)半径.
唯一似乎没有坚持的是每个细胞的阴影.
这是我的代码
....
[cell.layer setBorderColor:[UIColor colorWithRed:213.0/255.0f green:210.0/255.0f blue:199.0/255.0f alpha:1.0f].CGColor];
[cell.layer setBorderWidth:1.0f];
[cell.layer setCornerRadius:7.5f];
[cell.layer setShadowOffset:CGSizeMake(0, 1)];
[cell.layer setShadowColor:[[UIColor darkGrayColor] CGColor]];
[cell.layer setShadowRadius:8.0];
[cell.layer setShadowOpacity:0.8];
return cell;
Run Code Online (Sandbox Code Playgroud)
你知道我做错了什么,我能做些什么让阴影展现出来?
我想制作像iOS Home Screen一样的UICollectionView.我找到了几个(和好的)样本,如:
http://mobile.tutsplus.com/tutorials/iphone/uicollectionview-layouts/
http://www.cocoacontrols.com/platforms/ios/controls/sespringboard
http://www.cocoacontrols.com/platforms/ios/controls/aqgridview
http://www.cocoacontrols.com/platforms/ios/controls/namenu
http://www.cocoacontrols.com/platforms/ios/controls/mgbox2
iOS:有没有像主屏幕那样的开源Launcher Views?
上面的所有库都运行良好.编辑,删除和动画不是问题.但是,将两个单元组合成一个新组,好吧,没有一个库可以做到.我搜查了很多,但没有找到任何东西.有没有人知道任何库可以通过拖放来组合两个单元格?!?!或者至少有一些关于如何制作的提示?!?
我正在尝试在iOS 6上的UICollectionView中重新排序项目的动画.
我写了这段代码:
NSMutableDictionary *from = [NSMutableDictionary dictionaryWithCapacity:self.count];
for (int ii = 0; ii < self.count; ii++) {
MyItem item = [self getItemAtIndex:(NSInteger)ii];
[from setObject:[NSNumber numberWithInt:ii] forKey:[NSNumber numberWithInt:item.id]];
}
[self sort];
[self.collectionView performBatchUpdates:^{
for (int ii = 0; ii < self.count; ii++) {
MyItem item = [self getItemAtIndex:(NSInteger)ii];
NSNumber *prevPos = (NSNumber *)[from objectForKey:[NSNumber numberWithInt:item.id]];
if ([prevPos intValue] != ii) {
NSIndexPath *from = [NSIndexPath indexPathForItem:prevPos.intValue inSection:0];
NSIndexPath *to = [NSIndexPath indexPathForItem:ii inSection:0];
[self.collectionView moveItemAtIndexPath:from toIndexPath:to];
}
}
} completion:nil]; …Run Code Online (Sandbox Code Playgroud) 我有UICollection,其中将有许多学生项目和每个项目内有开关用于录制考勤.我像这样循环遍历所有可见的细胞.
for(attendancecollectionViewCell* cells in [[self collectionView] visibleCells]){
NSLog(@"The switch value : %c",cells.attendanceSwitchLabel.isOn);
}
Run Code Online (Sandbox Code Playgroud)
但是,我想循环遍历所有细胞以便参加,而不仅仅是可见细胞.
我正在尝试在Xcode 5中开发我的应用程序并在iOS 7环境下进行调试.
我有一个自定义的UICollectionViewLayoutAttributes.
我打算在长按UICollectionViewCell后做一些事情,所以我重写了UICollectionViewCell.m中的方法
- (void)applyLayoutAttributes:(MyUICollectionViewLayoutAttributes *)layoutAttributes
{
[super applyLayoutAttributes:layoutAttributes];
if ([(MyUICollectionViewLayoutAttributes *)layoutAttributes isActived])
{
[self startShaking];
}
else
{
[self stopShaking];
}
}
Run Code Online (Sandbox Code Playgroud)
在iOS 6或更低版本中,- applyLayoutAttributes:在我调用下面的语句后调用.
UICollectionViewLayout *layout = (UICollectionViewLayout *)self.collectionView.collectionViewLayout;
[layout invalidateLayout];
Run Code Online (Sandbox Code Playgroud)
但是,在iOS 7中,即使重新加载CollectionView,也不会调用- applyLayoutAttributes:.
这是一个苹果稍后会修复的错误,或者我必须做些什么?
我试图在所选的UICollectionviewCell中获取触摸位置.我有一个UIViewController,vc,包含一个UICollectionView,collectionView作为它的视图.collectionView内部是UICollectionViewCells.vc符合UICollectionViewDelegate所以最好我想在委托回调中获取触摸位置collectionView:(UICollectionView *)collection didSelectItemAtIndexPath:(NSIndexPath *)indexPath,(如果可能的话).有关如何做到这一点的任何建议?谢谢.
+--------------------------------------------+
| UICollectionView |
| |
| +-------------+ +-------------+ |
| | UICollec | | | |
| | tionView | | | |
| | Cell | | *<---------------<Touch here
| | | | | |
| +-------------+ +-------------+ |
| |
+--------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
*更新*
我最终检测到UIViewCollectionView使用UIGestureRecognizer的点击,然后将点击点转换为UICollectionViewCell视图.如果有更好的方法,请告诉我.谢谢.
-(void) viewDidLoad {
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[tapGesture setNumberOfTapsRequired:1];
[self.collectionView addGestureRecognizer:tapGesture];
}
-(void) handleTap:(UIGestureRecognizer*) gesture …Run Code Online (Sandbox Code Playgroud) 我已经设置了一个UICollectionView(使用默认的流程布局和垂直滚动),其中包含从xib加载的自定义单元格.单元格包含一些对它们有约束的元素(a UILabel和a UIView).我已经设置了约束,使得使用UICollectionViewFlowLayoutiOS8中可用的新属性,单元格高度随着标签文本高度的增加而增长estimatedItemSize:
layout.estimatedItemSize = CGSizeMake(self.collectionView.frame.width, 100)
Run Code Online (Sandbox Code Playgroud)
除了有一个大问题外,一切都像魅力一样:UICollectionView加载只有numberOfItemsInSection方法返回的项目的一半.因此,当方法返回时,例如10,我UICollectionView只显示5个单元格(但显示并完美地放置它们).
调试尝试的一些相关结果:
invalidateLayout或更改从1到2的部分数量来强制加载剩余的项目.但这些只是调试黑客.estimatedItemSize用itemSize属性替换时,一切都像魅力一样,即硬编码项目大小.但这会破坏我想要实现的自我调整功能.我假设我在考虑自我大小的细胞有什么问题.具体来说,我想知道问题是否与约束有关.
我很感激这里有任何帮助.
我从未使用过UICollectionViewControllers,我认为它们与UITableViewControllers 有些相似,但令我惊讶的是,我无法UICollectionViewCell像使用自定义UITableViewCells 那样将UI元素添加到自定义s中.
实际上,我可以在Interface Builder中添加标签,按钮等,但是当我运行应用程序时,单元格显示为空.
我已经注册了在细胞类viewDidLoad通过调用方法(void)registerClass:(Class)cellClass forCellWithReuseIdentifier:(NSString *)identifier,我已经检查了我回国的有效实例UICollectionViewCell的(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath方法.
我究竟做错了什么?
这就是我在滚动时将sectionHeader粘贴到collectionView顶部的方法
(collectionView.collectionViewLayout as? UICollectionViewFlowLayout)?.sectionHeadersPinToVisibleBounds = true;
Run Code Online (Sandbox Code Playgroud)
问题是,当页眉击中页脚时,它会被页脚向上推.
我们如何确保标题只能被另一个标题推送?
谢谢
ios uicollectionview uicollectionviewcell uicollectionreusableview swift3
我有一个滑出菜单,我已经实现为UICollectionViewController.我也为集合视图创建了自定义单元格.导航和一切按预期工作.我遇到麻烦的是当我点击一个实际的细胞时改变细胞外观.
我已经尝试了几种基于解决方案的方法(1)(2)我在堆栈上看过但没有让我满意.
解决方案1:实现UICollectionViewController委托方法:
class SlideOutMenuViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout{
//Setup code and other delegate methods….
override func collectionView(_ collectionView: UICollectionView, didHighlightItemAt indexPath: IndexPath) {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! SlideOutMenuCells
cell.backgroundColor = .white
}
override func collectionView(_ collectionView: UICollectionView, didUnhighlightItemAt indexPath: IndexPath) {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! SlideOutMenuCells
cell.backgroundColor = UIColor.mainGreen()
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试这个解决方案,没有任何反应.单元格背景颜色不会改变颜色.
解决方案2:此解决方案产生更好的结果,除了当我按住单元格时单元格会改变颜色.我希望单元格的背景颜色能够在点击时快速闪烁或突出显示,而不仅仅是用户按住单元格.
class SlideOutMenuCells: UICollectionViewCell {
//Setup code...
override var isHighlighted: Bool {
didSet …Run Code Online (Sandbox Code Playgroud) uicollectionview ×10
ios ×8
objective-c ×3
swift ×2
ios7 ×1
ios8 ×1
swift3 ×1
uitableview ×1
xcode5 ×1