麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > iOS > 正文

iOS 控件封裝(又名擰螺絲)之排序按鈕的開發

2019-10-21 18:22:03
字體:
來源:轉載
供稿:網友

前言

排序按鈕是實際開發中比較常見的一種控件,最近我也遇到了,今天簡單分享下。

雖然功能簡單,但是保證你看了不虧,尤其是對UI這塊比較薄弱的同學來說。

OK,先看圖:

iOS,控件封裝,排序按鈕

簡單描述一下:

按鈕一共有三種狀態:非選中、選中升序、選中降序。

iOS,控件封裝,排序按鈕

按鈕的三種狀態

點擊按鈕時有兩種情況:

  1. 按鈕原本處于非選中狀態,點擊,切換到選中狀態,其狀態變為升序。
  2. 按鈕原本就處于選中狀態,再點擊一下,則切換其排序狀態(升變降、降變升)。

不同狀態對應不同的icon,如果沒有UI,可以去iconfont 找圖標,輸入關鍵詞如“上下箭頭”就可以找到你需要的icon。

基本思路

繼承UIButton,直接在button上放view,設置約束,根據按鈕的狀態設置對應的圖片。

PS:自定義按鈕最靈活的做法就是直接在button上放view(在不需要糾結內存和view層級的情況下),簡單粗暴、隨心所欲。

完整代碼

.h文件:

#import <UIKit/UIKit.h>@interface CQSortButton : UIButton/** 按鈕文本 */@property (nonatomic, copy) NSString *title;/** 是否是升序 */@property (nonatomic, assign, readonly, getter=isAscending) BOOL ascending;@end

.m文件:

#import "CQSortButton.h"@interface CQSortButton ()/** 文本label */@property (nonatomic, strong) UILabel *cq_titleLabel;/** 箭頭imageView */@property (nonatomic, strong) UIImageView *cq_arrowImageView;@end@implementation CQSortButton#pragma mark - 構造方法- (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) {  [self setupUI]; } return self;}#pragma mark - UI搭建- (void)setupUI { self.layer.borderColor = [UIColor blackColor].CGColor; self.layer.borderWidth = 1; // 文本和圖片的父view UIView *contentView = [[UIView alloc] init]; [self addSubview:contentView]; contentView.userInteractionEnabled = NO; [contentView mas_makeConstraints:^(MASConstraintMaker *make) {  make.top.bottom.centerX.mas_equalTo(self);  make.left.mas_greaterThanOrEqualTo(self).mas_offset(3);  make.right.mas_lessThanOrEqualTo(self).mas_offset(-3); }]; // 文本 self.cq_titleLabel = [[UILabel alloc] init]; [contentView addSubview:self.cq_titleLabel]; self.cq_titleLabel.font = [UIFont boldSystemFontOfSize:13]; self.cq_titleLabel.adjustsFontSizeToFitWidth = YES; [self.cq_titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {  make.top.bottom.left.mas_offset(0); }]; // 圖片 self.cq_arrowImageView = [[UIImageView alloc] init]; [contentView addSubview:self.cq_arrowImageView]; self.cq_arrowImageView.image = [UIImage imageNamed:@"up_down"]; [self.cq_arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) {  make.size.mas_equalTo(CGSizeMake(20, 20));  make.centerY.mas_equalTo(contentView);  make.left.mas_equalTo(self.cq_titleLabel.mas_right);  make.right.mas_equalTo(contentView); }];}#pragma mark - 賦值選中狀態- (void)setSelected:(BOOL)selected { //// 注意: //// selected 表示你要賦值的狀態 //// super.selected 表示當前處于的狀態 if (selected) { // 即將設置成選中狀態  if (super.selected) { // 如果原本就處于選中狀態   // 那么就切換篩選狀態   _ascending = !_ascending;   if (_ascending) {    // 升序    self.cq_arrowImageView.image = [UIImage imageNamed:@"red_arrow_up"];   } else {    // 降序    self.cq_arrowImageView.image = [UIImage imageNamed:@"red_arrow_down"];   }  } else { // 如果之前不是選中狀態   // 那么設置成選中的默認排序狀態:升序   _ascending = YES;   self.cq_arrowImageView.image = [UIImage imageNamed:@"red_arrow_up"];  } } else { // 即將設置成非選中狀態  // 設置成非選中狀態的圖片  self.cq_arrowImageView.image = [UIImage imageNamed:@"up_down"]; } // 最后再賦值 [super setSelected:selected];}#pragma mark - 賦值文本- (void)setTitle:(NSString *)title { _title = title; self.cq_titleLabel.text = title;}@end

使用:

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. NSArray *titleArray = @[@"同比", @"銷售額", @"
注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄色免费不卡视频 | 免费毛片小视频 | 国产精选电影免费在线观看 | 毛片免费观看视频 | 视频一区二区三区免费观看 | 午夜视频亚洲 | 亚洲精品成人在线视频 | 精品一区二区三区毛片 | 欧美综合日韩 | 日韩欧美高清一区 | 久久久精品视频免费看 | 69性欧美高清影院 | 99re色| 日韩精品羞羞答答 | 中文字幕免费在线看 | 久久国产精品区 | 羞羞网站视频 | 中文字幕天堂在线 | 国产99久久精品一区二区300 | 亚洲小视频网站 | 56av国产精品久久久久久久 | 久久久久久久久国产 | 二区三区四区视频 | 黑人日比 | 国产99久久精品一区二区300 | 欧美精品一区二区三区四区 | 国产精品一区二区三区在线 | 天天透天天狠天天爱综合97 | www.777含羞草 | 深夜精品福利 | 正在播放91视频 | h视频免费看 | 亚洲一区在线观看视频 | 国产999在线 | 青草久久av | 免费a级作爱片免费观看欧洲 | 久久久视频免费观看 | 国产98色| 成人午夜视频在线观看免费 | 免费在线国产 | 国产一级αv片免费观看 |