博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
新浪微博客户端(6)-创建首页下拉菜单
阅读量:6970 次
发布时间:2019-06-27

本文共 2145 字,大约阅读时间需要 7 分钟。

 

创建首页下拉菜单,本节先完成下拉菜单界面的创建,下节再微调其位置。

DJDropdownMenu.h

#import 
@interface DJDropdownMenu : UIView/** 构造方法 */+ (instancetype)menu;/** 显示 */- (void)show;/** 消失 */- (void)dismiss;@property (nonatomic,weak) UIView *contentView;@property (nonatomic,strong) UIViewController *contentController;@end

 

DJDropdownMenu.m

#import "DJDropdownMenu.h"@interface DJDropdownMenu()/** 灰色背景 */@property (nonatomic,weak) UIImageView *containerView;@end@implementation DJDropdownMenu- (UIImageView *)containerView {    if (!_containerView) {        UIImageView *imageView = [[UIImageView alloc] init];        imageView.width = 217;        imageView.height = 217;        imageView.image = [UIImage imageNamed:@"popover_background"];        [self addSubview:imageView];        _containerView = imageView;    }    return _containerView;}- (void)setContentView:(UIView *)contentView {    _contentView = contentView;        // 1. 设置contentView位置    contentView.x = 10;    contentView.y = 15;        // 2. 设置contentView宽度(防止宽度过长导致图片拉伸变形)    contentView.width = self.containerView.width - 2* contentView.x;            // 3. 设置containerView高度(随contentView高度的变化而变化)    self.containerView.height = CGRectGetMaxY(contentView.frame)+12;        // 4.添加contentView至containerView;    [self.containerView addSubview:contentView];        }- (void)setContentController:(UIViewController *)contentController {    _contentController = contentController;    [self setContentView:contentController.view];}- (instancetype)initWithFrame:(CGRect)frame {    if (self = [super initWithFrame:frame]) {        // 1.设置背景颜色透明        self.backgroundColor = [UIColor clearColor];        // 2.设置containerView可以与用户交互        self.containerView.userInteractionEnabled = YES;    }    return self;}+ (instancetype)menu {    return [[self alloc] init];}/** show即是将当前View添加到顶层窗口上 */- (void)show {    // 1. 获取顶层窗口    UIWindow *window = [[UIApplication sharedApplication].windows lastObject];        // 2. 设置当前View大小    self.frame = window.bounds;        // 3. 添加当前View到顶层窗口    [window addSubview:self];    }/** dismiss即是将当前View从顶层窗口移除 */- (void)dismiss {    [self removeFromSuperview];}@end

 

最终效果:

 

转载地址:http://jrasl.baihongyu.com/

你可能感兴趣的文章
关于数理统计学及其与概率论之间联系的一些理解
查看>>
心急的C小加
查看>>
set nocount on的使用
查看>>
利用SQL Profiler 追踪数据库操作
查看>>
MYSQL数据库设计规范与原则
查看>>
[学习笔记]圆方树
查看>>
[NOI2017]泳池——概率DP+线性递推
查看>>
chrome贴吧插件——源代码
查看>>
还为代码编写愁吗?代码生成器将让你编写代码测试代码速度极大提升
查看>>
201621123048《Java程序设计》第六周学习总结
查看>>
java 查看线程死锁
查看>>
看博客学学Android(十五)
查看>>
es6中class类的全方面理解(二)------继承
查看>>
c语言文件操作
查看>>
数据结构--zkw线段树
查看>>
CSS和JS实现单行、多行文本溢出显示省略号(该js方法有问题不对)
查看>>
py 的 第28 天
查看>>
BZOJ 2627 JZPKIL
查看>>
算24 (递归)
查看>>
Oracle学习笔记安装篇之在Redhat Enterprise Linux 7.0 x86_64下安装Oracle11g R2
查看>>