新浦京81707con > 首页 > 新蒲金娱乐网站支持小数,iOS中实现一个支持小

原标题:新蒲金娱乐网站支持小数,iOS中实现一个支持小

浏览次数:179 时间:2020-04-05

在广大电子商务,外送食物,餐饮型应用里,都会在货色甘休后评价中有贰个个别组件。主旨绪路正是用UIControl并自定义达成个中的trackTouch的多少个主意。而显得不到三个的有限,举例半个轻易的笔触是根据分数切割星星的图像并呈现在那之中有个别。落成后效果如下。

于今无数选拔都有评分功效.当然咱们项目也不例外,有了订单就有订单争辩,订单评论里就有星级评分控件了! 平常的话, 都是差不离整星的评头论足, 可是也可以有奇葩的小数星评价.

[IOS 开发]着力 UI 控件详细解释 (UIButton | UIText菲尔德 | UITextView | UISwitch卡塔尔

 

 

新蒲金娱乐网站 12017-05-21 19_12_04

福寿双全步骤:1.创办 imageView, 用来退换星级图片.2.通过手势来分别点击到的地点.3.通过岗位判别 imageView 彰显的图纸(平日都以5颗星评价,依据星星点亮颗数实行命名:score1~score5)

1. UI 控件分类

 

 

UI 控件分类 : 活动控件, 被动控件, 静态控件;

-- 运动控件 : 世襲了 UIControl 基类, 该类控件能够与客户人机联作, 对应操作会激发对应的 事件绑定回调方法, 从前的 UIButton 正是这种控件;

-- 静态控件 : 世襲了 UIView 基类, 该类控件与顾客之间不能够互相, 在此以前运用的 UILabel 正是这种控件;

-- 被动控件 : 该类控件能够担任顾客操作, 平日用于吸收接纳客商输入, 这种艺术不会触发 IBAction 方法, 文本框正是一种被动控件;

 

 

 

 

单个星星的落成

对此单个星星的兑现,先考虑个别有多个状态,完全置灰状态,完全高亮状态,依照百分比半高亮状态。而本人那边用的是UIButton来促成,因为UIButton本人已经有平时,高亮,采用的气象。重要完结的正是比例高亮状态。大家得以依赖百分比将图像进行裁剪,让新图像的增加率独有百分比所占的上上下下图像的大幅度。不过那个时候调用setImage,会发觉图片处于整个button中间。那是因为UIButton的imageView的contentMode私下认可是AspectFit的,而AspectFit是默许居中的。Contentmode中的UIViewContentModeLeft,是不会把长边缩放到imageView的边长的。並且,直接改换UIButton里的ImageView的ContentMode是不曾意义的。要因而UIControl的contentVertical阿里gnment属性和contentHorizontal阿里gnment属性来落成相同ImageView的contentMode的效果与利益。然而那三个天性都不曾带Fit后缀的选项,也等于说并不会依附边长等比缩放。所以需求先把图片缩放到和Button大小相近。

新蒲金娱乐网站 2显示屏快速照相2017-05-21 凌晨6.32.58

日后,大家就足以按百分比裁剪图片

  (UIImage *)croppedImage:(UIImage *)image fraction:fractonPart{ CGFloat width = image.size.width * fractonPart * image.scale; CGRect newFrame = CGRectMake(0, 0, width , image.size.height * image.scale); CGImageRef resultImage = CGImageCreateWithImageInRect(image.CGImage, newFrame); UIImage *result = [UIImage imageWithCGImage:resultImage scale:image.scale orientation:image.imageOrientation]; CGImageRelease(resultImage); return result;}

并在BackgroundImage设置为森林绿的有数图像,设置为Button的highlighted状态

- setFractionPart:fractionPart{ if (fractionPart == 0) { return; } UIImage *image = [CDZStarButton croppedImage:self.highlightedImage fraction:fractionPart]; self.imageView.contentMode = UIViewContentModeScaleAspectFit; self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; self.contentVerticalAlignment = UIControlContentVerticalAlignmentFill; [self setImage:image forState:UIControlStateHighlighted]; [self setBackgroundImage:self.normalImage forState:UIControlStateHighlighted]; self.selected = NO; self.highlighted = YES;}

而全高亮的情形可以安装为UIButtonde点击态

- setHighlightedImage:(UIImage *)highlightedImage{ _highlightedImage = [CDZStarButton reSizeImage:highlightedImage toSize:self.frame.size]; [self setImage:_highlightedImage forState:UIControlStateSelected];}

而点击事件交由给上层的UIControl去管理,因为点击的时候,除了点击的点滴本人,早先的有数也相应处于完全高亮状态。在上层早先化开关的时候把其userInteractionEnabled属性设置为NO就可以,那样触摸事件就能忽视传递到Button去做事件管理,进而从响应者链传递上去交由父视图的UIControl管理。

比方点击到个其余二分一,我们理应把点击点调换来小数部分给上层。C语言的round函数能够四舍五入,这里的10意味着保留一位小数,能够依附实况保留位数,常常评分相当少需求越来越高精度的。

- fractionPartOfPoint:point{ CGFloat fractionPart = (point.x - self.frame.origin.x) / self.frame.size.width; return round(fractionPart * 10) / 10;}

到这里八个得以显得分数的个别开关就完了了,接下去便是在上层的UIControl去管理触摸事件的响应。

新蒲金娱乐网站 3F77FFF9A-F84F-420E-B9ED-702FE5E15C48.jpg

2. UIControl 介绍

 

 

 

 

UIControl部分的兑现

第一分两块,星星开关的布局,触摸事件响应。

先是依据星星的数量二个个加多上海电台图,用UIView的tag来代表对应第多少个少于开关。

- setupView { for (NSInteger index = 0; index < self.numberOfStars; index  ) { CDZStarButton *starButton = [CDZStarButton.alloc initWithSize:self.starSize]; starButton.tag = index; starButton.normalImage = self.normalStarImage; starButton.highlightedImage = self.highlightedStarImage; starButton.userInteractionEnabled = NO;//关闭事件响应,交由UIControl本身处理 [self addSubview:starButton]; }}

接下来是简政放权每种星星的岗位,计算间距和前后面距并layout

- layoutSubviews { [super layoutSubviews]; for (NSInteger index = 0; index < self.numberOfStars; index   ) { CDZStarButton *starButton = [self starForTag:index]; CGFloat newY = (self.frame.size.height - self.starSize.height) / 2; CGFloat margin = 0; if (self.numberOfStars > 1) { margin = (self.frame.size.width - self.starSize.width * self.numberOfStars) / (self.numberOfStars - 1); } starButton.frame = CGRectMake((self.starSize.width   margin) * index, newY, self.starSize.width, self.starSize.height); }}

那会儿,大家能够拉长三个方法去找到相应的星星button,依据tag和依靠点击的CGPoint

- (CDZStarButton *)starForPoint:point { for (NSInteger i = 0; i < self.numberOfStars; i  ) { CDZStarButton *starButton = [self starForTag:i]; if (CGRectContainsPoint(starButton.frame, point)) { return starButton; } } return nil;}- (CDZStarButton *)starForTag:(NSInteger)tag { __block UIView *target; [self.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { if (obj.tag == tag) { target = obj; *stop = YES; } }]; return (CDZStarButton *)target;}

我们先加上多少个章程。叁个是从第二个到某些星星开首从左到右依次点亮,一个是从最终二个轻松到有些星星从右到左依次熄灭。

- starsDownToIndex:(NSInteger)index { for (NSInteger i = self.numberOfStars; i > index; --i) { CDZStarButton *starButton = [self starForTag:i]; starButton.selected = NO; starButton.highlighted = NO; }}- starsUpToIndex:(NSInteger)index { for (NSInteger i = 0; i <= index; i  ) { CDZStarButton *starButton = [self starForTag:i]; starButton.selected = YES; starButton.highlighted = NO; }}

接下来设置一个评分的习性,重写其setter方法。allowFraction,用来剖断组件是不是须求分数表示,floor函数是取最大整数,也便是直接删除小数点后边的数字。剖断评分的大背尾部分是不是已经亮着,亮着那么表明从左到右最终叁个亮着的左手,反之在左边,分别调用从右到左依次熄灭,或从左到右依次点亮的措施,最后再设置分数部分。

- setScore:score{ if (_score == score) { return; } _score = score; NSInteger index = floor; CGFloat fractionPart = score - index;; if (!self.isAllowFraction || fractionPart == 0) { index -= 1; } CDZStarButton *starButton = [self starForTag:index]; if (starButton.selected) { [self starsDownToIndex:index]; } else{ [self starsUpToIndex:index]; } starButton.fractionPart = fractionPart;}

首要用到UIControl的多少个艺术

新蒲金娱乐网站 4显示器快速照相2017-05-21 上午6.31.56

率先个是发端点击的时候的事件管理,第2个是手指未抬起在显示器上继续移动的事件管理,第3个是间隔荧屏,第四个是因为别的特殊景况事件被终结的管理。

点击时候假若确定点击的个别,分明其小数部分,然后调用评分属性的setter方法就好了。

- beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { CGPoint point = [touch locationInView:self]; CDZStarButton *pressedStar = [self starForPoint:point]; if (pressedStar) { self.currentStar = pressedStar; NSInteger index = pressedStar.tag; CGFloat fractionPart = 1; if (self.isAllowFraction) { fractionPart = [pressedStar fractionPartOfPoint:point]; } self.score = index   fractionPart; } return YES;}

运动管理除了和点击同样的论断逻辑,还要小心手指移开了一定量之外的地点,分为所在有限的左边手,右侧三种。

- continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { CGPoint point = [touch locationInView:self]; CDZStarButton *pressedStar = [self starForPoint:point]; if (pressedStar) { self.currentStar = pressedStar; NSInteger index = pressedStar.tag; CGFloat fractionPart = 1; if (self.isAllowFraction) { fractionPart = [pressedStar fractionPartOfPoint:point]; } self.score = index   fractionPart; } else{ //移到了当前星星的左边 if (point.x < self.currentStar.frame.origin.x) { self.score = self.currentStar.tag; } //移到了当前星星的右边 else if (point.x > (self.currentStar.frame.origin.x   self.currentStar.frame.size.width)){ self.score = self.currentStar.tag   1; } } return YES;}

而成功触摸操作时,大家就能够用一个回调将最近的评分传给外部。

@protocol CDZStarsControlDelegate<NSObject>@optional/** 回调星星改变后的分数 @param starsControl 星星组件 @param score 分数 */- starsControl:(CDZStarsControl *)starsControl didChangeScore:score;@end

- endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { [super endTrackingWithTouch:touch withEvent:event]; if ([self.delegate respondsToSelector:@selector(starsControl:didChangeScore:)]) { [self.delegate starsControl:self didChangeScore:self.score]; }}- cancelTrackingWithEvent:(UIEvent *)event { [super cancelTrackingWithEvent:event]; if ([self.delegate respondsToSelector:@selector(starsControl:didChangeScore:)]) { [self.delegate starsControl:self didChangeScore:self.score]; }}

- (instancetype)initWithFrame:frame stars:(NSInteger)number starSize:size noramlStarImage:(UIImage *)normalImage highlightedStarImage:(UIImage *)highlightedImage{ if (self = [super initWithFrame:frame]) { _numberOfStars = number; _normalStarImage = normalImage; _highlightedStarImage = highlightedImage; _starSize = size; _allowFraction = NO; self.clipsToBounds = YES; self.backgroundColor = [UIColor clearColor]; [self setupView]; } return self;}

吐放score属性和allowFraction属性就能够。使用起来也超级轻巧。

 CDZStarsControl *starsControl = [CDZStarsControl.alloc initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 50) stars:5 starSize:CGSizeMake noramlStarImage:[UIImage imageNamed:@"star_normal"] highlightedStarImage:[UIImage imageNamed:@"star_highlighted"]]; starsControl.delegate = self; starsControl.allowFraction = YES; starsControl.score = 2.6f; [self.view addSubview:starsControl];

下一场在delegate里管理分数改造后的操作就能够。

现把项目中最首要代码收拾如下:

(1) UIControl 简介

 

 

UIControl 简介 :

-- 运用频率 : UIControl 控件日常不会被选用, 平日被使用的是 UIControl 的子类 UI 控件;

-- UIControl 首要职能 : 定义通用接口, 为移动控件的风云机制提供实现, 产生钦命的动作后, 控件会初步化 Action 方法, 回调对应的事件管理方法;

-- 事件管理方法 : UI 控件袭承 UIControl 方法, 在 Interface Builder 关联到 IBAction 方法, 这一个方式正是事件管理方法;

 

 

 

最后

富有源码和德姆o能够直接拿文件去行使或改变,也支撑Cocoapods.

假使您感到有帮扶,不要紧给个star鼓舞一下,招待关怀&调换有此外难点招待商议私信恐怕提issueQQ:757765420Email:nemocdz@gmail.comGithub:Nemocdz搜狐:@Nemocdz

@property (nonatomic, weak) UIImageView *starImage;@property (nonatomic, copy) NSString *score;

 // 设置starImage UIImageView *starImage = [[UIImageView alloc] init]; starImage.userInteractionEnabled = YES; starImage.backgroundColor = [UIColor clearColor]; starImage.frame = CGRectMake(CGRectGetMaxX(label.frame)   15, 0, 80, 14); starImage.image = [UIImage imageNamed:@"score0"]; [bgView addSubview:starImage]; self.starImage = starImage; // 添加星级评价手势 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scoreClick:)]; [starImage addGestureRecognizer:tap];

- scoreClick:(UITapGestureRecognizer *)tap { CGPoint point = [tap locationInView:tap.view]; QTXLog(@"%@", NSStringFromCGPoint; if (point.x < self.starImage.width / 5) { self.starImage.image = [UIImage imageNamed:@"score1"]; // 展示点亮图片 self.score = @"1"; // 评论分数 } else if (point.x < self.starImage.width / 5 * 2) { self.starImage.image = [UIImage imageNamed:@"score2"]; self.score = @"2"; } else if (point.x < self.starImage.width / 5 * 3) { self.starImage.image = [UIImage imageNamed:@"score3"]; self.score = @"3"; } else if (point.x < self.starImage.width / 5 * 4) { self.starImage.image = [UIImage imageNamed:@"score4"]; self.score = @"4"; } else if (point.x < self.starImage.width) { self.starImage.image = [UIImage imageNamed:@"score5"]; self.score = @"5"; }}

(2) UIControl 方法

 

 

UIControl 方法 :

-- - (void) addTarget : (id) target action : (SEL) action forControlEvents : (UIControlEvents) events 方法 : 注册事件管理方法, target 方法所在对象, action 方法的 SEL 参数, forControlEvents UIControl伊芙nts 类型的枚举值;

-- - (void) removeTarget : (id) target action : (SEL) action forControlEvents : (UIControlEvents) events 方法 : 移除从前注册的事件管理方法;

-- - (NSArray *) actionsForTarget : (id) target forControlEvents : (UIControlEvents) controlEvent 方法 : 获取注册的法子;

-- - (NSSet *) allTargets 方法 : 获取格局对象集合;

-- - (UIControlEvents) allControlEvents 方法 : 获取具备的平地风波集结;

 

 

 

在此以前我们必要并不曾那么细,就批评整颗星星评价, 但是近日有新供给半颗星星,这边就先收拾下. 同期此番不仅协理非整星精评价, 也支撑轻巧整星评价.

(3卡塔尔国 UI 控件状态

 

 

UI 控件状态 :

-- 普通 : UI 控件的暗中认可状态;

-- 高亮 : UI 控件优质展现, 处于高亮状态; 手放在按键上处于高亮状态;

-- 禁用 : UI 控件关闭后, 处于禁止使用状态; 禁止使用状态的控件不可操作, 禁止使用操作在 Interface Builder 撤废 Enable 复选框;

-- 选中 : 用于标识控件已启用 或 被选中, 选中状态能够穿梭持续, 高亮状态只在 按下才显得;

 

 

 

兑现步骤:

(4卡塔尔(قطر‎ UI 控件状态

 

 

UI 控件状态 :

-- enabled : UIControl 控件是不是可用;

-- selected : 该属性判别该 UIControl 控件是不是被入选;

-- highlighted : UIControl 控件是不是高亮;

新蒲金娱乐网站 5

 

 

 

 

  1. 伊始化单个星星的达成, 按比例裁剪图片更动轻巧全部图片(一张铜锈绿暗色星星图, 一张高亮色星星图卡塔尔.
  2. 伊始化星星开关的布局, 通过触摸事件响应区分点击到的职责, 表现整体评价效果.
  3. 对score分数属性和allowFraction是还是不是小数整颗星属性流露表现,在当下调整器里应用代理做分数退换后的操作, 伊始化星星评价组件。

(5卡塔尔 UIControl 触摸方法

 

 

UIControl 常用触摸方法 :

-- beginTrackingWithTouch : withEvent : 方法 : 早先触摸 UIControl 控件时会回调该办法;

-- continueTrackingWithTouch : withEvent : 方法 : 三番五次触摸 UIControl 控件时会激发该方法;

-- endTrackingWithTouch : withEvent : 方法 : 甘休碰触 UIControl 控件时会激发该方式;

 

 

 

 

 

 

单个星星的落到实处, 要考虑到全灰状态,全亮状态,百分比高亮状态. 这里用UIButton来贯彻, 先把图纸缩放到和Button大小同样, 能够依据百分比将图像举行裁剪,让新图像的宽窄唯有百分比所占的总体图像的宽度. 这里自定义ZLStarButton

二. UIButton 控件

 

 

 

 

 

 

 

 

按百分比裁剪图片

1. 按键属性详明

 

新蒲金娱乐网站 6

 

 

  (UIImage *)cutImage:(UIImage *)image fraction:fractonPart{ CGFloat width = image.size.width * fractonPart * image.scale; CGRect newFrame = CGRectMake(0, 0, width , image.size.height * image.scale); CGImageRef resultImage = CGImageCreateWithImageInRect(image.CGImage, newFrame); UIImage *result = [UIImage imageWithCGImage:resultImage scale:image.scale orientation:image.imageOrientation]; CGImageRelease(resultImage); return result;}

(1) Type 属性

 

 

Type 属性 : 假若急需自定义按键, 使用 Custom 属性;

-- Custom : 外观靠开拓者设置, 效果如下 :

新蒲金娱乐网站 7

-- System : 默许按键风格, 暗许开关, 效果如下 :

新蒲金娱乐网站 8

-- Detail Disclosure : i Logo, 常用与体现列表实际情况, 效果如下 :

新蒲金娱乐网站 9

-- Info Light | Info Dark : 展现 i Logo, 展现简短的证实音讯, 效果如下 :

新蒲金娱乐网站 10

-- Add Contact : 呈现 按键, 常用于增加内容, 效果如图 :

新蒲金娱乐网站 11

 

 

 

 

暗色置灰的气象设置为UIButton的正规普通状态

(2) State Config 属性

 

 

UIButton 状态 : 每一种情状都足以设置分歧的 文本, 图片, 格式;

新蒲金娱乐网站 12

-- Default : 私下认可状态;

-- Highlighted : 顾客碰触时的高亮状态;

-- Selected : 被入选时之处;

-- Disabled : 禁用状态;

 

为分裂景色的 UIButton 设置样式 :

-- setTittle : forState : 方法 : UIButton 分化处境 设置不一致的题目;

-- setTittleColor : forState : 方法 : UIButton 不一样情状设置差别的标题颜色;

-- setTittleShadowColor : forState : 方法 : UIButton 分裂意况 设置 区别的开关汉语本的影子设置颜色;

-- setBackgroundImage : forState : 方法 : UIButton 分化景色设置差异的背景图片;

-- setImage : forState : 方法 : UIButton 区别境况设置分歧图片;

 

forState 参数 : UIControlState 整数枚举值;

-- UIControlStateNormal : 私下认可平常状态;

-- UIControlStateHighlighted : 高亮状态;

-- UIControlStateDisabled : 禁止使用状态;

-- UIControlStateSelected : 被选中状态;

 

 

 

 

- setDarkImg:(UIImage *)darkImg{ _darkImg = [ZLStarButton reSizeImage:darkImg toSize:self.frame.size]; [self setImage:_darkImg forState:UIControlStateNormal]; }

(3) Tittle 属性

 

 

Tittle 属性 : 设置区别的文件形式;

新蒲金娱乐网站 13

-- Plain 属性值 : 私下认可就能够;

-- Attribute 属性值 :

 

 

 

全高亮的事态设置为UIButton的点击状态

(4) Tittle 属性

 

 

Font 属性 : 用于决定文字的 字体, 大小, 风格;

新蒲金娱乐网站 14

 

 

 

 

- setBrightImg:(UIImage *)brightImg{ _brightImg = [ZLStarButton reSizeImage:brightImg toSize:self.frame.size]; [self setImage:_brightImg forState:UIControlStateSelected];}

(5) Text Color | Shadow Color 属性

 

新蒲金娱乐网站 15

 

Text Color 属性 : 调整文件的水彩;

Shadow Color 属性 : 调整文件阴影的水彩;

 

 

 

在BackgroundImage设置为紫褐的少数图像,设置为Button的高亮状态

(6) Image 属性

 

Image 属性 : 为开关设置图片, 设置后该按键会成为图片按键, 以前设置的 Tittle 属性作废;

新蒲金娱乐网站 16

 

 

 

- setFractionPart:fractionPart{ if (fractionPart == 0) { return; } UIImage *image = [ZLStarButton cutImage:self.brightImg fraction:fractionPart]; self.imageView.contentMode = UIViewContentModeScaleAspectFit; self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; self.contentVerticalAlignment = UIControlContentVerticalAlignmentFill; [self setImage:image forState:UIControlStateHighlighted]; [self setBackgroundImage:self.darkImg forState:UIControlStateHighlighted]; self.selected = NO; self.highlighted = YES;}

(7) Background 属性

 

 

Background 属性 : 用于为开关设置背景图片;

新蒲金娱乐网站 17

-- 文件图片共存 : 该属性可以设置 文本 和 图片 同盟作为开关背景, 比使用 Image 属性设置图片 展现内容 更丰盛;

 

 

 

一经点击到个其他一片段,把点击点转变来小数部分给上层。C语言的round函数能够四舍五入,这里的10表示保留一位小数。

(8) Shadow Offset 属性

 

 

Shadow Offset 属性 :

新蒲金娱乐网站 18

-- 偏移值 : 调控 UILabel 控件内阴影文本与 符合规律文本 之间的偏移量;

-- 舞狮方向 : 要求为 水平 和 垂直 五个趋向 分别钦点八个值;

-- Horizontal 水平方向 : > 0 向右偏移, < 0 向左偏移;

-- Vertical 垂直方向 : > 0 向下偏移, < 0 向上偏移;

 

 

 

- fractionPartOfPoint:point{ CGFloat fractionPart = (point.x - self.frame.origin.x) / self.frame.size.width; return round(fractionPart * 10) / 10;}

(9) Line Break 属性

 

 

Line Break : 文本截断的品质;

新蒲金娱乐网站 19

 

 

 

 

基于星星的数量每种增加在视图上,用UIView的tag来标志对应的零零碎碎按键。

(10) Edge 属性

 

 

Edge 属性 : 调节开关边界;

新蒲金娱乐网站 20

-- Content : 按键内容作为按键边界;

-- Tittle : 开关的标题文本作为边界;

-- Image : 开关图片作为开关边界;

 

 

 

- setupView { for (NSInteger index = 0; index < self.numberOfStars; index  ) { ZLStarButton *starButton = [ZLStarButton.alloc initWithSize:self.starSize]; starButton.tag = index; starButton.darkImg = self.darkStarImg; starButton.brightImg = self.brightStarImg; starButton.userInteractionEnabled = NO; [self addSubview:starButton]; }}

(11) Inset 属性

 

 

Inset 属性 :

新蒲金娱乐网站 21

-- 作用 : 调整开关边界间隔, 在按键四周留出空白;

-- 间距值 : 该属性须求设置 Top, Bottom, Left 和 Right 多少个值代表 上 下 左 右 间距;

 

 

 

 

 

计量每种星星的岗位及计算间距和左右侧距并layout

2. 开关示例

 

 

 

 

- layoutSubviews { [super layoutSubviews]; for (NSInteger index = 0; index < self.numberOfStars; index   ) { ZLStarButton *starButton = [self starForTag:index]; CGFloat starY = (self.frame.size.height - self.starSize.height) / 2; CGFloat margin = 0; if (self.numberOfStars > 1) { margin = (self.frame.size.width - self.starSize.width * self.numberOfStars) / (self.numberOfStars - 1); } starButton.frame = CGRectMake((self.starSize.width   margin) * index, starY, self.starSize.width, self.starSize.height); }}

(1) 创建 Detail Disclosure 按钮

 

 

创建 Detail Disclosure 按钮 : UIButton 的 Type 属性类型是 Detail Disclosure;

新蒲金娱乐网站 22

 

 

 

依靠tag和凭仗点击的CGPoint找到相应的零零碎碎按钮

(2) 创建 Add Contact 按钮

 

创建 Add Contact 按钮 : 设置 UIButton 的 Type 属性类型是 Add Contact;

新蒲金娱乐网站 23

 

 

 

- (ZLStarButton *)starForPoint:point { for (NSInteger i = 0; i < self.numberOfStars; i  ) { ZLStarButton *starButton = [self starForTag:i]; if (CGRectContainsPoint(starButton.frame, point)) { return starButton; } } return nil;}- (ZLStarButton *)starForTag:(NSInteger)tag { __block UIView *target; [self.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { if (obj.tag == tag) { target = obj; *stop = YES; } }]; return (ZLStarButton *)target;}

(3) 创建 Info Light | Info Dark 按钮

 

创建 Info Light 按钮 :

新蒲金娱乐网站 24

创建 Info Dark 按钮 :

新蒲金娱乐网站 25

 

 

 

处理触摸事件:从最后一个零星到有些星星从右到左依次熄灭

(4) 创建 文字 按钮

 

创立文字开关 :

-- Type 属性 : 设置为 Custom;

-- Default 状态设置 : 设置 文本颜色 浅蓝, 设置 阴影颜色 玳瑁红;

新蒲金娱乐网站 26

-- HighLighted 状态 : 设置 文本颜色 白灰, 阴影颜色紫罗兰色;

新蒲金娱乐网站 27

-- Selected 状态 : 设置文本颜色 月光蓝, 阴影颜色 深紫红;

新蒲金娱乐网站 28

 

 

 

 

本文由新浦京81707con发布于首页,转载请注明出处:新蒲金娱乐网站支持小数,iOS中实现一个支持小

关键词: 新浦京81707con 组件 控件 小数 评分

上一篇:修改后台返回的数据,HTTP抓包工具Charles分析

下一篇:没有了