iOS开发 - 第05篇 - 项目 - 08 - 发微博

实现效果:




1、导航栏内容


1> 自定义HWComposeViewController,继承自UIViewController

2>点击tabBar中的加号按钮弹出发微博控制器(包装成导航控制器)




3>设置导航栏,注意titleView中有两排文字,且文字大小不同,可以使用NSMutableAttributedString来解决!!!




注:需要判断name是否存在,可能网速慢就没有


2、自定义输入框控件


2.1 automaticallyAdjustsScrollViewInsets


注:默认是YES:当scrollView遇到UINavigationBarUITabBar等控件时,默认会设置scrollViewcontentInset,即输入文字自动显示在导航栏下面!!!(top默认64)


2.2 UITextField和UITextView对比




2.3 自定义HWTextView


由于需要添加一个既有占位符,又可以输入多行文字的输入框控件,最好自定义一个HWTextView,继承自UITextField,在drawRect:中添加占位符!




HWComposeViewController中设置输入框控件:




2.4 监听输入框文字改变


注:应该由控件内部完成,什么时候需要显示/隐藏占位文字,使用通知




3、输入框控件完善


3.1 监听属性改变


注:对于一个自定义控件,当使用者改变控件属性的时候,控件的属性需要马上相应改变,对于控件属性,一般重写setter方法




3.2 发送按钮使能


HWComposeViewController通过通知监听输入框文字改变




3.3 发送文字微博




4、键盘工具条


4.1 界面




4.2 实现思路


1>自定义工具条控件HWComposeToolbar,继承自UIView






2> 拖拽TextView隐藏键盘,但是工具条会显示在底部

1:默认情况下ScrollView能够拖动的前提是内容高度大于本身的高度,可以设置alwaysBounceVertical = YES;

2:工具条不能添加到键盘上(inputAccessoryView),也不能添加到textView(否则滚动textView,工具条也会有滚动),要添加到发送微博控制器的view

3:监听键盘弹出/隐藏,移动工具条的位置








6、封装工具条和相册


注:弹出发微博控制器后,自动弹出键盘

[self.textView becomeFirstResponder];


5.1 监听工具条按钮点击


1:按钮的点击需要切换控制器(如点击照相按钮弹出相机、点击相册按钮弹出相册、点击表情按钮切换键盘表情),这些事情最好由控制器(发微博控制器)完成,因此需要使用代理,监听按钮点击

2:使用枚举绑定工具条每个按钮的tag,用于判断点击了哪个按钮,外面就不需要通过索引或者其他方法来确定到底点击了哪个按钮,即封装工具条








5.2 弹出照相机/相册


使用UIImagePickerController,根据UIImagePickerControllerSourceType判断弹出类型

遵循<UINavigationControllerDelegate, UIImagePickerControllerDelegate>




注:可以用UIImageWriteToSavedPhotosAlbum往相册写图片


5.3 发微博配图相册


1>自定义HWComposePhotosView,添加到textView中(因为拖拽textView希望图片也跟着一起拖动)




2> 选完图片后,传给相册显示

注:通常封装UI控件思路,内部自己布局,自己显示,外部只需要传给控件数据即可




5.4 Modal出相册导致键盘frame改变问题


Modal出相册控制器后,键盘frame改变,选好图片后返回发微博控制器,键盘frame又会改变,会导致工具条在屏幕下面(看不到)

在监听键盘frame改变方法中判断如下:






6、发微博


1> HWComposePhotosView中添加一个readOnly属性,表示图片数组




在initWithFrame:方法中初始化_photos =[NSMutableArray array];

在addPhoto:往数组中添加UIImage


2>区分发文字微博和带图片的微博,带图片的微博属于上传文件数据!

注:新浪提供发接口暂时只能发送一张图片






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值