UIScrollView的简单使用
1,创建对象
2,设置滑动区域
3,创建滑动的View
4,将滑动的view添加到ScrollView上显示
5,释放对象
CGRect screenBounds = [ [UIScreen mainScreen]bounds];//返回的是带有状态栏的Rect // CGRect rect = [ [UIScreen mainScreen]application Frame];//不包含状态栏的Rect //创建ScrollViewiew UIScrollView *scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0.0f, 0.0f, 500.0f, 500.0f)]; scrollView.frame=screenBounds; scrollView.backgroundColor=[UIColor redColor]; //设置ScollView的滑动区域 scrollView.contentSize=CGSizeMake(500, 1100); UIImageView *myImageView= [[UIImageView alloc] initWithFrame: CGRectMake( 0, 0, 500, 1100)]; [myImageView setImage:[UIImage imageNamed:@"bk.jpg"]]; //img添加到Scollview [scrollView addSubview:myImageView]; //scollView添加到View [self.view addSubview:scrollView]; [scrollView release]; [myImageView release];
2,UITableView的简单使用,由于最近在做金融相关的开发大量使用到了table相关的控件,android的控件都要自己实现,ios确实自带的效果,想想就有点操蛋 ,,,谁叫ios比android要简单呢?
1,定义标题数据
2,定义标题分别对应的数据
3,实现数据源代理和表格代理(UITableViewDataSource,UITableViewDelegate)
4,创建TableView
5,实现相关的方法
#import "TableViewController.h" @interface TableViewController (){ UITableView *table; } @property(strong,nonatomic)NSMutableArray *arrayList1; //数据源 @property (strong,nonatomic)NSMutableArray *arrayTitle;//标题 @property(strong,nonatomic)NSMutableArray *arrayList2; @end @implementation TableViewController @synthesize arrayList1; @synthesize arrayTitle; @synthesize arrayList2; - (void)viewDidLoad { [super viewDidLoad]; // Uncomment the following line to preserve selection between presentations. // self.clearsSelectionOnViewWillAppear = NO; // Uncomment the following line to display an Edit button in the navigation bar for this view controller. self.navigationItem.rightBarButtonItem = self.editButtonItem; table=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, 430, 600)]; // table.dataSource=self; table.delegate=self; if (arrayList1==nil) { arrayList1 =[[NSMutableArray alloc]initWithObjects:@"美元/日元",@"美元/韩元",@"韩元/日元",@"港币/日元",@"美元/欧元",@"美元/英镑",@"美元/新加坡元",@"美元/澳元",@"美元/卢布",@"泰铢/日元",@"英镑/泰铢",@"新加坡元/澳门元",@"美元/港币",@"港币/台币",@"台币/越南盾",@"美元/韩元", nil]; arrayTitle=[[NSMutableArray alloc]initWithObjects:@"自选",@"交叉", nil]; arrayList2=[[NSMutableArray alloc]initWithObjects:@"美元/港币",@"韩元/日元", nil]; } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } //设置标题 -(NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ return [arrayTitle objectAtIndex:section]; } #pragma mark - Table view data source //指定多少分区,根据arrayTitle计算 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { #warning Incomplete implementation, return the number of sections return [arrayTitle count]; } //设置数据 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { #warning Incomplete implementation, return the number of rows //1,根据当前点击的区域设置数据 switch (section) { case 0: return [arrayList1 count]; case 1: return [arrayList2 count]; default: break; } return 0; } //绘制数据 cellForRowAtINdexPath - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; static NSString * string = @"cell"; UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:string]; if(cell == nil) { cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:string]; } //根据分区操作 switch (indexPath.section) { case 0: [[cell textLabel] setText:[arrayList1 objectAtIndex:indexPath.row]]; break; case 1: [[cell textLabel] setText:[arrayList2 objectAtIndex:indexPath.row]]; break; default: break; } return cell; } // Override to support conditional editing of the table view. - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the specified item to be editable. return YES; } // Override to support editing the table view. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the row from the data source [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; } else if (editingStyle == UITableViewCellEditingStyleInsert) { // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view } } // Override to support rearranging the table view. - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { } // Override to support conditional rearranging of the - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the item to be re-orderable. return YES; } #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } @end
1,titleForHeaderInSection 设置数据
2,numberOfSectionsInTableView 根据标题数目进行分区
3,numberOfRowsInSection 指定区域数据的条数
4,cellForRowAtIndexPath 绘制数据、
创建cell
static NSString * string = @"cell"; UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:string]; if(cell == nil) { cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:string]; }
相关推荐
在iOS开发中,`UIScrollView` 和 `UITableView` 是两个核心组件,用于实现可滚动内容的显示,例如在应用中展示大量的列表数据。本教程将详细讲解如何在 `UIScrollView`(尤其是 `UITableView`)中实现上拉和下拉刷新...
### UISCrollView与UITableView嵌套使用 #### 知识点概述 在iOS应用开发过程中,经常需要将`UIScrollView`与`UITableView`进行嵌套使用,以实现更加丰富的界面交互和展示效果。例如,在一个水平滑动的界面中,每个...
当需要实现类似网易新闻首页那样,既有图片轮播又有列表数据展示的效果时,通常会结合`UISCrollView`和`UITableView`进行使用。现在,让我们深入探讨这两种控件的结合使用及其背后的原理。 首先,`UISCrollView`是...
在iOS开发中,当面临需要在一个视图中展示大量数据并允许用户滚动浏览时,我们通常会使用UIScrollView或其子类,如UITableView和UICollectionView。然而,问题在于,当多个UIScrollView或者它们的子类(如...
最近因为工作项目中需要用到UIScrollView嵌套UItableView嵌套交互问题,顺便网上搜了下的demo,发现实现的效果并不是很理想,滑动偶尔会有延迟现象,所以自己想了个办法,顺便把自己实现写了个demo分享出来,一起来...
在iOS开发中,`UIScrollView`和`UITableView`是两种非常重要的视图组件,它们用于展示大量数据并允许用户滚动查看。这两个组件的布局设计对于用户体验至关重要。本篇文章将深入探讨`UIScrollView`和`UITableView`...
将滚动视图页面另存为图像,支持UIScrollView,UITableView,UICollectionView,UIWebView,WKWebView。(支持iOS13) iOS13 UIScrollView中的UITableVieW UIScrollView UITableView UICollectionView ...
总之,嵌套UITableView在UIScrollView中是一个常见的做法,但在实现时需要特别注意单元格重用机制的正确使用,以及在处理复杂布局时的坐标计算和条件判断。通过仔细调试和优化上述提到的代码段,开发者应该能够解决...
在这种情况下,可以不直接使用UITableView,而是通过UIScrollView来实现类似的功能。以下将详细讲解如何利用UIScrollView制作iOS下的类似UITableView的可循环列表。 首先,我们需要了解UIScrollView的基本用法。...
在iOS开发中,UITableView与UIScrollView是两种非常重要的视图组件,它们各自有着特定的用途,但有时我们需要将它们结合使用,以实现特定的功能,比如在本案例中的“轮播图和TableView的混合代码”。这个...
对于包含大量数据的ScrollView,应该考虑使用`UICollectionView`或者`UITableView`,因为它们能更高效地重用cell,减少内存消耗。对于静态内容,可以考虑预渲染部分视图,减少运行时的渲染负担。 #### 8. ...
CLTableWithFooterViewController 是一个Objective-C库,专为iOS应用设计,主要用于在用户滚动到UIScrollView或UITableView的底部时,能够方便地添加并显示一个固定的页脚视图。这个库简化了在滚动视图中实现固定...
总的来说,这个简单的例子展示了如何创建和使用UIScrollView,包括设置内容视图、内容大小、手势识别、contentOffset和contentInset,以及自动布局的应用。在实际项目中,通过不断实践和深入学习,我们可以掌握更...
总的来说,掌握 `UIScrollView` 和 `UITableView` 的滚动与分页特性是 iOS 开发中的重要技能,它们能帮助你构建各种动态和交互丰富的界面。通过不断实践和学习,开发者可以更好地理解和运用这些组件,提升应用的用户...
至于“没有实现控件复用导致的出现重复文本,以及部分bug”,这是关于`UITableView`的数据源和代理方法使用不当的问题。在`UITableView`中,为了提高性能和节省内存,通常会使用`cellForRowAt`方法复用`...
可以使用UICollectionView或UITableView代替单纯的ScrollView,以便更有效地管理视图。另外,使用Content Offset和Content Insets的配合,可以避免不必要的子视图渲染,提高滚动性能。 总的来说,UIScrollView是一...
- `estimatedRowHeight` 和 `rowHeight`:对于UITableView,可以设置这两个属性来帮助估算和计算高度,特别是在使用自动布局时。 - `intrinsicContentSize`:当子视图有内在大小(比如UILabel的文字内容决定其大小...
Animated top menu for UITableView / UICollectionView / UIScrollView written in Swift.zip,uitableview的动画顶部菜单/uicollectionview/uiscrollview用swift编写
这个需求可以通过使用UIScrollView作为容器并结合UITableView的特性来实现。以下是一种简单而有效的方法: 1. **基本思路**: - 使用UIScrollView作为容器,设置`pagingEnabled`属性为`YES`,以便实现分页效果。 ...