ios屏幕内容超过屏幕大小问题。可以上下滚动
答案:4 悬赏:60 手机版
解决时间 2021-01-14 15:27
- 提问者网友:niaiwoma
- 2021-01-14 09:39
我是ios新手,刚刚学ios,我想知道像 淘宝/京东那样的ios App,首页中有很多产品信息,手机屏幕一开始只显示部分内容,但可以通过手指上下滑动来查看底下的内容 。求指点这是怎么实现的。我看了一些参考书大多数的demo 都只在一屏幕上布置UI元素,或者UITableView实现滚动。求指点,万分感谢。!(希望能说的详细点)。
最佳答案
- 五星知识达人网友:西风乍起
- 2019-09-10 18:07
1. 把所有内容添加到UIScrollview中
2. 判断scrollview的contentsize的高度是否超过屏幕高度,如果超过屏幕高度,那么就可以滚动.如果没有超过屏幕高度就不可以滚动.
如果还有什么不明白的,回复我给你解决
像你说的这个类似于淘宝之类的 都是UITableview或者UICollectionView写的.你上网看看UITableview的实现,我先给你一些简单的实现逻辑 你看看
1. 在viewcontroller里 声明成员变量
@property (nonatomic, strong) UITableView * tableView;
2. 懒加载 重写getter方法 ,注意下 下面的那两个代理是最重要的,用来你显示UI和交互的
- (UITableView *)tableView{
if (!_tableView) {
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 44, SCREEN_WIDTH, SCREEN_HEIGHT - 64 ) style:UITableViewStyleGrouped];
_tableView.delegate = self;//代理是最重要的
_tableView.dataSource = self;//代理是最重要的
_tableView.backgroundColor = [UIColor clearColor];
_tableView.showsVerticalScrollIndicator = NO;
[_tableView registerNib:[UINib nibWithNibName:@"KBNoticeTableViewCell" bundle:nil] forCellReuseIdentifier:@"KBNoticeTableViewCell"];
}
return _tableView;
}
3. 在viewdidload里 把tableview添加到view上
[self.view addSubview:self.tableView];
4. 实现UITableview的代理方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.dataArray.count;//返回一共有多少行.可以根据不同的组返回不同的行数.
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 75;//返回每一行cell的高度.可以不同的行返回不同的高度
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return CGFLOAT_MIN;//返回header的高度,没有的话返回最小值
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return CGFLOAT_MIN;//返回footer的高度 没有的话返回最小值,
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//创建某一行cell 我用的是xib注册的cell
KBNoticeTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"KBNoticeTableViewCell" forIndexPath:indexPath];
cell.dataDic = self.dataArray[indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//点击某一行cell
}
这样你就能实现一个你说的那个功能了.还不懂你就百度查查UITableview的实现,很多简书都写了入门级别的教程
2. 判断scrollview的contentsize的高度是否超过屏幕高度,如果超过屏幕高度,那么就可以滚动.如果没有超过屏幕高度就不可以滚动.
如果还有什么不明白的,回复我给你解决
像你说的这个类似于淘宝之类的 都是UITableview或者UICollectionView写的.你上网看看UITableview的实现,我先给你一些简单的实现逻辑 你看看
1. 在viewcontroller里 声明成员变量
@property (nonatomic, strong) UITableView * tableView;
2. 懒加载 重写getter方法 ,注意下 下面的那两个代理是最重要的,用来你显示UI和交互的
- (UITableView *)tableView{
if (!_tableView) {
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 44, SCREEN_WIDTH, SCREEN_HEIGHT - 64 ) style:UITableViewStyleGrouped];
_tableView.delegate = self;//代理是最重要的
_tableView.dataSource = self;//代理是最重要的
_tableView.backgroundColor = [UIColor clearColor];
_tableView.showsVerticalScrollIndicator = NO;
[_tableView registerNib:[UINib nibWithNibName:@"KBNoticeTableViewCell" bundle:nil] forCellReuseIdentifier:@"KBNoticeTableViewCell"];
}
return _tableView;
}
3. 在viewdidload里 把tableview添加到view上
[self.view addSubview:self.tableView];
4. 实现UITableview的代理方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.dataArray.count;//返回一共有多少行.可以根据不同的组返回不同的行数.
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 75;//返回每一行cell的高度.可以不同的行返回不同的高度
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return CGFLOAT_MIN;//返回header的高度,没有的话返回最小值
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return CGFLOAT_MIN;//返回footer的高度 没有的话返回最小值,
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//创建某一行cell 我用的是xib注册的cell
KBNoticeTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"KBNoticeTableViewCell" forIndexPath:indexPath];
cell.dataDic = self.dataArray[indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//点击某一行cell
}
这样你就能实现一个你说的那个功能了.还不懂你就百度查查UITableview的实现,很多简书都写了入门级别的教程
全部回答
- 1楼网友:逃夭
- 2020-12-15 09:15
列表形式的数据显示用UITableView,不是列表形式的想实现滚动用UIScrollView,其实TableView就是在ScrollView的基础上做的新功能,父类就是ScrollView。
你只要新建一个UIView,设置成你需要的大小,在上面摆UI,然后addSubView成为ScrollView的子视图,设置ScrollView的contentSize为这个view的size就可以实现滚动了。都是很基本的东西,多做做就会了。
- 2楼网友:老鼠爱大米
- 2020-07-16 00:36
你设置uiscrollview.consize的宽度和高度,高度设置为你最底层的高度,我是这么认为,别人都可以滑动,还是不行的话,把告诉设置为10000试试,如果不是这个原因,检查你空寂是不是加载uiscrollview上面
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯