建设工程有限公司网站wordpress一键环境搭建

当前位置: 首页 > news >正文

建设工程有限公司网站,wordpress一键环境搭建,数据分析师要学什么,素材网站源码步骤#xff1a;发微博01-导航栏内容 - 发微博02-自定义TextView - 发微博03-完善TextView和发送微博按钮 - 发微博04-显示工具条 - 发微博05-封装工具条和相册 - 发微博06-发送微博 发微博01-导航栏内容 APP的演示操作#xff1a; 从APP的演示操作中可…步骤发微博01-导航栏内容 - 发微博02-自定义TextView - 发微博03-完善TextView和发送微博按钮 - 发微博04-显示工具条 - 发微博05-封装工具条和相册 - 发微博06-发送微博 发微博01-导航栏内容 APP的演示操作 从APP的演示操作中可知当点击tabBar的“”按钮时APP会以modal的方式跳转到发微博的控制器。实现代码如下 在HMComposeViewController类的viewDidLoad方法中设置导航栏内容并添加输入控件用于输入微博正文如下  HMComposeViewController类的初始化方法如下  发微博02-自定义TextView APP的演示操作 前文中已经初步添加了输入控件UITextView但是输入控件UITextView并不能完全满足我们的要求即无法实现占位文字。 所以新建了一个继承自UITextView的HMTextView类将占位文字的实现以及输入控件的具体逻辑都封装到HMTextView类中只将占位文字和占位文字颜色两个属性提供给外界HMComposeViewController类使用。如下 在HMTextView类中占位文字的实现有多种方式第一种是添加UILabel第二种是重写drawRect:方法。在这里我们采用的是第二种方式。重写drawRect:方法如下  观察APP的演示操作一开始进入发微博界面时输入控件上显示的是“分享新鲜事”当我们输入文字后“分享新鲜事”就会“消失”。这里的实现原理是通知。具体代码如下  注意这里不适合使用代理用通知即可。发出通知后会触发textDidChange事件然后重新调用drawRect方法进行重绘。 发微博03-完善TextView和发送微博按钮 APP的演示操作 在前文的基础上继续完善输入控件并且当有输入文字后导航栏的右边发送按钮可以响应(发送微博)。 参考前面HMComposerViewController监听输入文字同样是采用通知的方式。如下 其中textDidChange方法的具体代码如下  在HMComposerViewController中监听方法send是用于发送微博具体代码如下  说明 1.完善前文中设置导航栏内容的代码要考虑是否有微博名如下 2.HMTextView类声明了两个属性placedholder和placedholderColor由于这两个属性不是系统属性所以在优先级上会较低我们有时候需要重写它们的setter方法如下 3.每一次使用通知都要注意调用dealloc方法移除观察者。如下 发微博04-显示工具条 APP的演示操作 仔细观察APP的演示操作工具条一开始是显示在屏幕底部当键盘弹出时工具条才移动到键盘的顶部。 在HMComposeViewController的viewDidLoad方法添加工具条如下 其中setupToolBar方法如下  问题对于工具条的类HMComposerToolbar暂时不要考虑先弄明白为什么当键盘一出现工具条就会移动键盘的顶部实现原理是什么 思路 1.键盘会在进入发微博页面后就弹出是因为调用了viewDidAppear:方法如下 2.弹出键盘后移动工具条这是因为当键盘的frame发生改变时就会发出通知UIKeyboardWillChangeFrameNotification触发keyboardWillChangeFrame:事件 执行动画移动工具条如下 其中keyboardWillChangeFrame:方法如下 在HMComposerToolbar类继承自UIView中设置工具条上的按钮。具体代码如下  implementation HMComposeToolbar- (id)initWithFrame:(CGRect)frame {self [super initWithFrame:frame];if (self) {self.backgroundColor [UIColor colorWithPatternImage:[UIImage imageNamed:compose_toolbar_background]];//初始化按钮[self setupBtn:compose_camerabutton_background highImage:compose_camerabutton_background_highlighted];[self setupBtn:compose_toolbar_picture highImage:compose_toolbar_picture_highlighted];[self setupBtn:compose_mentionbutton_background highImage:compose_mentionbutton_background_highlighted];[self setupBtn:compose_trendbutton_background highImage:compose_trendbutton_background_highlighted];[self setupBtn:compose_emoticonbutton_background highImage:compose_emoticonbutton_background_highlighted];}return self; }/*** 创建一个按钮*/

  • (void)setupBtn:(NSString *)image highImage:(NSString *)highImage {UIButton btn [[UIButton alloc] init];[btn setImage:[UIImage imageNamed:image] forState:UIControlStateNormal];[btn setImage:[UIImage imageNamed:highImage] forState:UIControlStateHighlighted];[self addSubview:btn];}/** 设置按钮的尺寸*/
  • (void)layoutSubviews {[super layoutSubviews];//设置按钮的frameNSUInteger btnCount self.subviews.count;CGFloat btnW self.size.width / 5;CGFloat btnH self.size.height;for (int i 0; i btnCount; i) {UIButton *btn self.subviews[i];btn.x i * btnW;btn.y 0;btn.width btnW;btn.height btnH;} } end发微博05-封装工具条和相册 APP的演示操作 仔细观察APP的演示操作在输入文字下面添加了相册用于显示发微博的图片。而工具条上的按钮也可以响应某些事件。其实现过程相当复杂。 在HMComposeViewController的viewDidLoad方法添加相册如下 其中setupPhotosView方法如下  在HMComposePhotosView继承自UIView中添加图片到发微博的相册中设置图片的frame。关键代码如下  其中要将方法addPhoto提供外界用于从外界添加图片。 在HMComposeToolbar类完善之前的代码使得工具条上的按钮可以响应。不同于之前所用到的通知这里要通过代理来实现按钮的点击事件。 过程 1.声明代理协议和代理属性具体代码如下 2.通知代理对象具体代码如下 说明由于使用到btn.tag所以要对之前的代码进行完善如下 在HMComposeViewController中遵守HMComposeToolbarDeleagate代理协议实现代理方法如下 其中openCamera和openAlbum方法分别对应工具条上的“拍照”和“相册”按钮。具体代码如下  openImagePickerController:设置代理遵守 UINavigationControllerDelegate和UIImagePickerControllerDelegate代理协议实现代理方法imagePickerController:didFinishPickingMediaWithInfo:方法如下 在imagePickerController:didFinishPickingMediaWithInfo:方法中取出系统相册里的图片后,调用HMComposePhotosView类的addPhoto方法将图片添加到发微博的相册photosView中。 发微博06-发送微博 APP的演示操作 仔细观察APP的演示操作此时发微博除了发送文字还可以发送图片。截图如下 实际上在前文的send方法中的api接口是没办法发送图片的需要另外一个接口。这就需要我们考虑两种情况有图片和没图片。 完善send方法具体代码如下  其中sendWithImage方法如下  sendWithoutImage方法如下  说明 1.发送带有图片的微博需要将图片上传到新浪的服务器。 这就涉及HMComposePhotosView类需要HMComposePhotosView类提供photos属性给外界用来获取图片资源。 由于外界没必要对图片资源进行修改只需要获取即可。所以对photos属性进行特殊声明readonly。如下 并且要完善下addPhoto方法的代码如下  总结主要掌握好工具条的设置和如何移动并且进一步加深对readonly属性的认识。