ios-day05-06(灵活使用UIScrollView的三个属性:contentSize、contentInset、contentOffset,模仿“喜马拉雅”的界面)

本文介绍了如何使用iOS开发技术实现类似喜马拉雅App的界面布局。通过设置UIScrollView的代理、隐藏垂直滚动条、调整内容尺寸及初始滚动位置等操作,实现了自定义的界面效果。并提供了完整的源码下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源码下载地址:http://download.youkuaiyun.com/detail/liu537192/8442167

效果图:

                                                                                               


核心代码:

//
//  LiuJieViewController.m
//  06-喜马拉雅
//
//  Created by XinYou on 15-2-12.
//  Copyright (c) 2015年 vxinyou. All rights reserved.
//

#import "LiuJieViewController.h"

@interface LiuJieViewController () 
   
    
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UIButton *lastBtn;
@property (weak, nonatomic) IBOutlet UIView *topView;
@property (weak, nonatomic) IBOutlet UIView *buttom;


@end

@implementation LiuJieViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.scrollView.delegate = self;
    // 隐藏竖直方向的滚动条
    self.scrollView.showsVerticalScrollIndicator = NO;
    
    // 水平方向的尺寸为0,表示水平方向不可滑动
    CGFloat contentW = 0;
//    CGFloat contentH = self.lastBtn.frame.origin.y + self.lastBtn.frame.size.height + 10;
    // 获取最后一个按钮的最大Y值(最大Y值 = 原Y值 + 按钮的高度)
    CGFloat contentH = CGRectGetMaxY(self.lastBtn.frame) + 10;
    // 设置ScrollView内容尺寸
    self.scrollView.contentSize = CGSizeMake(contentW, contentH);
    
    
    CGFloat insetTop = self.topView.frame.size.height;
    CGFloat insetLeft = 0;
    CGFloat insetBottom = self.buttom.frame.size.height;
    CGFloat insetRight = 0;
    // 给ScrollView增加额外的滚动区域
    self.scrollView.contentInset = UIEdgeInsetsMake(insetTop, insetLeft, insetBottom, insetRight);
    
    
    CGFloat offsetX = 0;
    CGFloat offsetY = -self.topView.frame.size.height;
    // 设置ScrollView一开始的滑动位置
    self.scrollView.contentOffset = CGPointMake(offsetX, offsetY);
    
}

@end

   

作者HansRove,源码XiMaLaYa-by-HansRove-仿喜马拉雅, 对AVFoundation框架的一次尝试 软件环境: iOS9.1硬件环境: Mac OS X 10.11开发工具: Xcode7.1 项目描述: 模板是“喜马拉雅FM”,因为很喜欢这个软件的风格和内容,当时这款软件参杂着太多的广告以及推广。所以打算通过抓包,并Json解析出数据,进而使用自己搭建的界面完成视听播放功能, UI也算是高仿喜马拉雅FM”.但部分内容在原来基础上做了相应的修改。 功能概述: 0、音频播放:这是最基础的模块,提供用户收听各类声音、专辑及电台主播。 1、发现听:实时动态的信息展示页,每天的音频热门信息和音频专辑集数的更新;展示给用户声音分类和电台及网络主播相应的推荐页供用户选择交互。 2、定制听:记录用户关注的声音(专辑)、主播和电台以及收听历史,并推荐近几天热门声音。 3、下载听:记录用户下载记录并对用户下载过的声音进行分类展示。 4、搜索功能:根据热词提供展示,用户可以搜索主播、电台、声音或专辑。 项目所用技术及框架:【纯代码+故事板】项目使用MVVM模式搭建 1、二次封装AFNetworking与MJExtension进行数据请求与解析; 2、使用Masonry实现纯代码布局,使用MJRefresh实现下拉刷新上拉加载; 3、大量使用自定义Cell、自定义Button、自定义View来实现多控件封装方便布局使用; 4、使用AVFundation实现在线音频播放。并自定义播放器外观以及进度条配置; 项目收获: 1、对MVVM模式的使用更加熟练,设计模式的了解及掌握为未来开发少走了许多弯路; 2、熟悉JSON数据解析,对数据处理有一定的了解,特别是掌握了MJExtension框架的原理及写法; 3、通知中心及单例模式的使用,减低了代码的耦合性; 4、纯代码跳转Storyboard或者Xib使用更加熟练;封装了好多自定义视图,方便布局。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值