#pragma mark - UITableView// 注册复用标示符[_myTableView registerClass:[BookCell class] forCellReuseIdentifier:@"cell"];
[_myTableView registerNib:[UINib nibWithNibName:@"BookCell"bundle:nil] forCellReuseIdentifier:@"cell"];// 自动下沉,(继承与scrollview,符合其特性)self.automaticallyAdjustsScrollViewInsets=NO;// 分割线颜色_myTableView.separatorColor= [UIColorredColor];// 通过tableview找到cellUITableViewCell*cell = [tableView cellForRowAtIndexPath:indexPath];// 设置cell点击以后是否变灰,如果参数设成NONE就不变,否则就变cell.selectionStyle= UITableViewCellSelectionStyleNone;// cell的附属view的类型(如果附属view里有btn,那么这个view的点击事件就会独立出来)// 代理有事件响应方法cell.accessoryType= UITableViewCellAccessoryDetailDisclosureButton;// 自定义附属view// cell.accessoryView// 脚标题行高- (CGFloat)tableView:(UITableView*)tableView heightForFooterInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath;// 自定义头标题的view(view的会替换自带的头标题view)// frame设置无效,位置固定,宽度固定和table一样,高度通过代理方法设置- (UIView*)tableView:(UITableView*)tableView viewForFooterInSection:(NSInteger)section;// 设置小节数,默认为1- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section;// cell被点击时促发- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{// 让cell被选中变灰的状态,恢复成没变灰的状态[tableView deselectRowAtIndexPath:indexPath animated:YES];
}// 与上相反,一般不用- (void)tableView:(UITableView*)tableView didDeselectRowAtIndexPath:(NSIndexPath*)indexPath;// 如果cell的附属view里有btn,那么这个view的点击事件会独立出来- (void)tableView:(UITableView*)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath*)indexPath;#pragma -编辑相关// 刷新,重新加载数据[_myTableView reloadData];// 每次点击都改变tv的编辑状态// 修改删除按钮上的文字- (NSString*)tableView:(UITableView*)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath*)indexPath;// 允许编辑,编辑相关的按钮(删除,插入)点击时触发- (void)tableView:(UITableView*)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexPath
{if(editingStyle == UITableViewCellEditingStyleDelete) {// 通过位置先删除对应的数据模型[[_dataArr objectAtIndex:indexPath.section] removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
}if(editingStyle == UITableViewCellEditingStyleInsert) {
Person *person = [[Person alloc] init];// 在数据对应位置插入数据[[_dataArr objectAtIndex:indexPath.section] insertObject:person atIndex:indexPath.row];// 在对应的位置插入一个cell(会自动匹配刚刚插入的数据)[_myTableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
}
}// 设置cell的编辑风格- (UITableViewCellEditingStyle)tableView:(UITableView*)tableView editingStyleForRowAtIndexPath:(NSIndexPath*)indexPath;// 返回删除和插入按位或(其实即使3),就是多选删除//return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;// 移动单元格- (void)tableView:(UITableView*)tableView moveRowAtIndexPath:(NSIndexPath*)sourceIndexPath toIndexPath:(NSIndexPath*)destinationIndexPath
{// 通过移动前的位置找到将要移动的数据模型Person *person = [[_dataArr objectAtIndex:sourceIndexPath.section] objectAtIndex:sourceIndexPath.row];// 把数据源删除[[_dataArr objectAtIndex:sourceIndexPath.section] removeObject:person];// 插入源位置[[_dataArr objectAtIndex:destinationIndexPath.section] insertObject:person atIndex:destinationIndexPath.row];
}// self.editButtonItem的点击事件// UIViewController自带的方法- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{// 必须调用一次父类的(类似viewDidLoad)[supersetEditing:editing animated:YES];
[_myTableView setEditing:editing animated:YES];
}// 索引条// 默认情况下点击索引里的第几个,tv就会跳到第几段- (NSArray*)sectionIndexTitlesForTableView:(UITableView*)tableView
{NSMutableArray*titleArr = [NSMutableArrayarray];for(inti ='A'; i <='Z'; i++) {
[titleArr addObject:[NSStringstringWithFormat:@"%c", i]];
}returntitleArr;
}// 索引颜色//@property(nonatomic, retain) UIColor *sectionIndexColor NS_AVAILABLE_IOS(6_0) UI_APPEARANCE_SELECTOR; // color used for text of the section index//@property(nonatomic, retain) UIColor *sectionIndexBackgroundColor NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR; // the background color of the section index while not being touched//@property(nonatomic, retain) UIColor *sectionIndexTrackingBackgroundColor NS_AVAILABLE_IOS(6_0) UI_APPEARANCE_SELECTOR; // the background color of the section index while it is being touched#pragma mark - UICollectionView// 网格视图需要一个布局来支撑自己UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];// 设置滚动方向(默认就是垂直方向)layout.scrollDirection= UICollectionViewScrollDirectionHorizontal;// 注册[_myCollection registerClass:[MyCell class] forCellWithReuseIdentifier:@"cell"];
[_myCollection registerClass:[MyView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header"];
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section;
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath
{// 网格视图的cell必须提前注册MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell"forIndexPath:indexPath];
cell.label.text= [NSStringstringWithFormat:@"第%d个", indexPath.row];
cell.iconView.image= [UIImageimageNamed:[NSStringstringWithFormat:@"%d.jpg", indexPath.row]];returncell;
}// 设置单个cell的大小- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath*)indexPath;// 设置cell的分组- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;// 设置cell之间水平最小间隔- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;// 设置分段内部cell之间垂直最小间隔// 滑动方向的间距- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section;// 设置分段之间的边距- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section;// 设置段头或者段尾- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString*)kind atIndexPath:(NSIndexPath*)indexPath
{// 判断是段头还是短尾// if (kind == UICollectionElementKindSectionFooter)MyView *view = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header"forIndexPath:indexPath];
}// 设置段头的大小(如果collectionView是垂直方向滑动,那么宽度会被忽略,系统会自动匹配成collectionView的宽度)- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section;
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath*)indexPath;
ios UI控件的简单整理(5)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...