小控件实现

作者: sydie | 来源:发表于2015-09-06 18:39 被阅读89次

- 一个控制器中包含多个子控制器。

- 分析:可以利用父子关系,建立联系。一个控制器可以有一个父控制器,也可以有多个子控制器。就像导航控制器,tabbar是它的父控制器,它又可以添加多个子控制器。

- 逻辑分析:

      -- 这里上面有5个按钮,点击每个按钮,出现不一样的画面。第一种是添加5个view,交给父控制器——也就是整个界面管理,但是一旦逻辑复杂,这个大的父控制器很有可能会累死!另外还有一种方法,每个按钮点击,就创建一个新的控制器,也就是说添加5个控制器,而最大的父控制器只需要管理上面的这个bar。那总共就需要创建6个控制器。就能完美的解决这个问题了。

- 界面分析:

    -- 01.添加scrollView:滑动屏幕和点击按钮都可以进入与之对应的控制器,说明最大的这个控制器需要添加一个scrollView,并且能够分页。

  -- 02.细节处理:在iOS7之后,添加到导航栏的控制器或者View都会产生一个自动布局滚动边距,添加一个控制器或者view进去,它的y值会加上一个64,但是又只会影响一个控制器或者view,所以这个属性有时挺碍事的,在这里我们需要把这个属性去掉。并且也要把它的水平滚动条和垂直滚动条去掉。

  -- 03.添加5个按钮。这5个按钮表面上看只需要添加5个词语,一个红色的view就可以了。观察可以看到5个按钮的背景颜色是一样的,高亮状态是一样的。所以可以添加一个viewBar,在这个bar中利用循环添加5个按钮。

  -- 04.按钮细节处理。在这里按钮的文字恰巧都是两个字,所以按钮的宽度非常好设定,但是如果文字的字数是不一样的,那么宽度就需要根据文字进行计算了。

// 添加标签bar

NSArray*titleArray = @[@"全部",@"视频",@"声音",@"图片",@"段子"];

UIView*titleView = [[UIView alloc] init];

[titleView setBackgroundColor:[UIColor colorWithWhite:1 alpha:0.7]];

titleView.width=CXLScreenW;

titleView.height=CXLTitleViewHeight;

titleView.x= 0;

titleView.y=CXLNavigationBarMaxY;

[self.viewaddSubview:titleView];

// 添加底部红色条

UIView *bottomView = [[UIView alloc] init];

bottomView.height= 2;

bottomView.y= titleView.height- bottomView.height;

[bottomView setBackgroundColor:[UIColor redColor]];

[titleView addSubview:bottomView];

self.bottomView= bottomView;

// 添加按钮

CGFloatbtnW = titleView.width/ titleArray.count;

CGFloatbtnH = titleView.height;

for(int i = 0; i<titleArray.count;i++){

// 按钮创建

CXLTitleButton*button = [CXLTitleButton buttonWithType:UIButtonTypeCustom];

button.frame=CGRectMake(i*btnW, 0, btnW, btnH);

[button addTarget:selfaction:@selector(didTitleButton:) forControlEvents:UIControlEventTouchUpInside];

[titleView addSubview:button];

button.tag= i;

[self.buttonArray addObject:button];

[button setTitle:titleArray[i] forState:UIControlStateNormal];

if(i==0) {

// 默认被选中

button.selected=YES;

self.clickedButton= button;

[button.titleLabel sizeToFit];

self.bottomView.width= button.titleLabel.width;

self.bottomView.centerX= button.centerX;

}

}

  -- 05.添加5个子控制器,添加完成就可以设置scrollView的滚动范围了。

  -- 06. 监听按钮的点击,设置选中状态三部曲。利用动画设置滚动效果

-- 07.点击按钮后,控制器需要滚动。这里需要使用到scrollView的代理方法。点击按钮时停止滚动,与拖动停止滚动都要实现代理方法。

- 控制器内部的实现,涉及到数据问题,另外讲述。这里主要意识到的就是子控制器与父控制器的问题。可以通过父子控制器这条线,拿到数据,或者做很多逻辑判断,非常方便。

相关文章

  • 小控件实现

    - 一个控制器中包含多个子控制器。 - 分析:可以利用父子关系,建立联系。一个控制器可以有一个父控制器,也可以有多...

  • 酱油03-实现一些小控件

    实现简单的小控件 label/progress label progress

  • 控件渐变色的实现

    控件渐变色的实现(一)—— CAGradientLayer实现控件渐变色的实现(二)—— Core Graphics实现

  • Android 实现控件居中和控件中文字居中

    一、实现控件居中 在xml文件中修改 二、实现控件中文字居中

  • 微信小程序地图控件Map的使用

    本文介绍微信小程序map控件的使用map为原生控件之一……介绍完map控件之后下面直接来看代码怎么实现吧和往常一样...

  • 手势锁与涂鸦画板

    gestureLock(手势锁)实现步骤 布局控件:背景控件和手势锁控件 手势锁控件:子控件:循环增加9个按钮,设...

  • 自定义组合控件,事件传递响应规则

    自定义组合控件 当系统提供的控件,不足以满足我们开发需求时,可以通过自定义控件来实现更好的效果。 组合控件的实现步...

  • 自定义View

    自定义控件的三种实现方法 对现有控件进行拓展 通过组合来实现新的控件:将系统原生控件组合起来,加上动画效果,形成一...

  • RxTextWidget用法

    RxTextWidget用法 一组控件数据 单个控件 实现代码

  • 【Android】自定义控件

    Android自定义控件可以有三种实现方式 组合原生控件自己绘制控件继承原生控件 1 组合原生控件 1.1 组合原...

网友评论

    本文标题:小控件实现

    本文链接:https://www.haomeiwen.com/subject/zphrcttx.html