UISwitch 添加 标签

给UISwitch添加一个标签。左右滑动时候出现开关标签内容。

代码:

//
//  UISwitch+JGLabel.h
//  JGSwitch
//
//  Created by sl on 15/4/11.
//  Copyright (c) 2015年 Madordie. All rights reserved.
//
//
//  说明:
//      1.给UISwitch添加开关标签
//      2.可根据需要调整标签的相关属性
//      3.类别实现,不用更改代码即可添加
//
//
//  代码出处:http://www.cnblogs.com/madordie/
//
//  思路:
//      1.找到对应View添加两个Label
//

#import <UIKit/UIKit.h>
@interface UISwitch (JGLabel)
/**
*  设置开关标题文字
*      1.根据自己需要设置字体内容、大小、字体颜色等属性。
*      2.不建议在此设置背景颜色,如需设置,调用父类方法设置。
*      3.根据需要可手动调整Label的frame,以使你的Label更加美观。
*/
#pragma mark - 标题
- (UILabel *)onTitle;
- (UILabel *)offTitle;
@end
/**
*备注:
*      1.offTitle对齐方式默认右对齐。
*      2.onTitle默认左对齐
*      3.么有了
*/
//示例代码:
/*
//初始化属性,可IB定制
UISwitch *mySwitch = [[UISwitch alloc] init];
mySwitch.center = self.view.center;
mySwitch.transform = CGAffineTransformMakeScale(2.0f, 2.0f);
[self.view addSubview:mySwitch];
//设置标题属性(当作UILabel使用)
mySwitch.offTitle.text = @"off";
mySwitch.onTitle.text  =@"on";
*/

 

//
//  UISwitch+JGLabel.m
//  JGSwitch
//
//  Created by sl on 15/4/11.
//  Copyright (c) 2015年 Madordie. All rights reserved.
//

#import "UISwitch+JGLabel.h"
#import <objc/runtime.h>
static const void *onTitleKey = &onTitleKey;
static const void *offTitleKey = &offTitleKey;
#define JGGetOnTitle                objc_getAssociatedObject(self, onTitleKey )
#define JGGetOffTitle               objc_getAssociatedObject(self, offTitleKey)
#define JGSetOnTitle(JLabel)        objc_setAssociatedObject(self, onTitleKey,  JLabel, OBJC_ASSOCIATION_RETAIN_NONATOMIC)
#define JGSetOffTitle(JLabel)       objc_setAssociatedObject(self, offTitleKey, JLabel, OBJC_ASSOCIATION_RETAIN_NONATOMIC)
@implementation UISwitch (JGLabel)
#pragma mark - getter
- (UILabel *)onTitle {
UILabel *_onTitle = JGGetOnTitle;
if (_onTitle) {
return _onTitle;
}
_onTitle = [self JGMakeLabel];
[self.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
UIView *view = obj;
if ([view isKindOfClass:NSClassFromString(@"_UISwitchInternalViewNeueStyle1")]) {
[view.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
UIView *aview = obj;
if ([aview isKindOfClass:[UIImageView class]]) {
[view insertSubview:_onTitle belowSubview:aview];
}
}];
}
}];
JGSetOnTitle(_onTitle);
return _onTitle;
}
- (UILabel *)offTitle {
UILabel *_offTitle = JGGetOffTitle;
if (_offTitle) {
return _offTitle;
}
_offTitle = [self JGMakeLabel];
[self insertSubview:_offTitle atIndex:0];
[_offTitle setTextAlignment:NSTextAlignmentRight];
JGSetOffTitle(_offTitle);
return _offTitle;
}
#pragma mark - tools
- (UILabel *)JGMakeLabel {
UILabel *label = [[UILabel alloc] init];
[label setBackgroundColor:[UIColor clearColor]];
label.textColor = [UIColor blackColor];
CGRect frame = self.bounds;
frame.origin.x = 4;
frame.size.width -= 8;
label.frame = frame;
return label;
}
@end
UISwitch+JGLabel.m

http://www.cnblogs.com/madordie/p/4416111.html

 

转载于:https://www.cnblogs.com/madordie/p/4416111.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/545030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爱了!蚂蚁开源的“SpringBoot”框架,新增了这6项功能...

SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架&#xff0c;它在 Spring Boot 的基础上&#xff0c;提供了诸如 Readiness Check&#xff0c;类隔离&#xff0c;日志空间隔离等等能力。在增强了 Spring Boot 的同时&#xff0c;SOFABoot 提供了让用户可以在 Spring Boo…

PUC的完整形式是什么?

PUC&#xff1a;大学预科/污染控制/个人解锁码 (PUC: Pre University Course / Pollution Under Control / Personal Unlock Code) 1)PUC&#xff1a;大学预科课程 (1) PUC: Pre University Course) PUC is an abbreviation of the Pre University Course. It alludes to an in…

过滤器VS拦截器的4个区别,看完豁然开朗!

Spring的拦截器与Servlet的Filter有相似之处&#xff0c;比如二者都是AOP编程思想的体现&#xff0c;都能实现权限检查、日志记录等。但它们之间又有很大区别&#xff0c;所以本文磊哥就带大家全面了解一下什么是过滤器&#xff1f;什么是拦截器&#xff1f;以及二者有什么区别…

分布式ID生成的9种方法,特好用!

前言业务量小于500W或数据容量小于2G的时候单独一个mysql即可提供服务&#xff0c;再大点的时候就进行读写分离也可以应付过来。但当主从同步也扛不住的是就需要分表分库了&#xff0c;但分库分表后需要有一个唯一ID来标识一条数据&#xff0c;数据库的自增ID显然不能满足需求&…

8051 管脚定义_8051微控制器的引脚说明

8051 管脚定义8051微控制器的引脚说明 (Pin Description of 8051 Microcontroller) Pins from 1-8 1-8针 Port 1: The pins in this port are bi-directional and can be used for input and output. The pins are individually controlled; some are used for input while ot…

android 事件分发

2019独角兽企业重金招聘Python工程师标准>>> 文章来源于CSDN http://blog.csdn.net/lanhuzi9999/article/details/26515421 转载于:https://my.oschina.net/lhjtianji/blog/398998

对象复制的7种方法,还是Spring的最好用!

日常编程中&#xff0c;我们会经常会碰到对象属性复制的场景&#xff0c;就比如下面这样一个常见的三层 MVC 架构。当我们在上面的架构下编程时&#xff0c;我们通常需要经历对象转化&#xff0c;将业务请求流程经历三层机构后需要把 DTO 转为DO然后在数据库中保存。当需要从数…

Java中的Switch都支持String了,为什么不支持long?

来源 | jitwxs.cn/6f3eddff.html我们知道 Java Switch 支持byte、short、int 类型&#xff0c;在 JDK 1.5 时&#xff0c;支持了枚举类型&#xff0c;在 JDK 1.7 时&#xff0c;又支持了 String类型。那么它为什么就不能支持 long 类型呢&#xff0c;明明它跟 byte、short、int…

什么是WebSocket,以及如何在Python中使用它?

什么是WebSocket&#xff1f; (What is WebSocket?) WebSocket is a communications protocol which provides a full-duplex communication channel over a single TCP connection. WebSocket protocol is standardized by the IETF as RFC 6455. WebSocket是一种通信协议&am…

final的8个小细节,听说只有高手才知道!你知道几个?

final关键字是一个常用的关键字&#xff0c;可以修饰变量、方法、类&#xff0c;用来表示它修饰的类、方法和变量不可改变&#xff0c;下面就聊一下使用 final 关键字的一些小细节。细节一、final 修饰类成员变量和实例成员变量的赋值时机对于类变量&#xff1a;声明变量的时候…

java实现的简单程序登录界面

2019独角兽企业重金招聘Python工程师标准>>> 这是我写的简单代码&#xff1a; 简单&#xff0c;没什么嚼头&#xff0c;作业贴&#xff0c;直接上代码。文件保存用户名和密码&#xff0c;输入密码错误3次退出程序。 [java] view plaincopy 01.public Login() throws…

try-catch-finally中的4个巨坑,老程序员也搞不定!

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;在 Java 语言中 try-catch-finally 看似简单&#xff0c;一副人畜无害的样子&#xff0c;但想要真正的“掌控”它&#xff0…

CentOS7安装Python3.4 ,让Python2和3共存

为什么80%的码农都做不了架构师&#xff1f;>>> #CentOS7安装Python3.4 &#xff0c;让Python2和3共存 环境&#xff1a;CentOS7.1 需求&#xff1a;网络畅通 编译需要的一些包&#xff0c;酌情安装 yum groupinstall "Development tools" yum install z…

字节二面:优化 HTTPS 的手段,你知道几个?

由裸数据传输的 HTTP 协议转成加密数据传输的 HTTPS 协议&#xff0c;给应用数据套了个「保护伞」&#xff0c;提高安全性的同时也带来了性能消耗。因为 HTTPS 相比 HTTP 协议多一个 TLS 协议握手过程&#xff0c;目的是为了通过非对称加密握手协商或者交换出对称加密密钥&…

求首位相连一维数组最大子数组的和

结对成员&#xff1a; 朱少辉&#xff1a;主要负责代码编写 侯涛亮&#xff1a;主要负责程序测试 题目:一个首尾相接的一维整型数组&#xff0c;其中有正有负&#xff0c;求它的最大子数组并返回它的位置。 思路&#xff1a;在求一维子数组的基础上&#xff0c;先输入一个含有N…

SpringBoot接口幂等性实现的4种方案!

作者 | 超级小豆丁来源 | www.mydlq.club/article/94目录什么是幂等性什么是接口幂等性为什么需要实现幂等性引入幂等性后对系统的影响Restful API 接口的幂等性如何实现幂等性方案一&#xff1a;数据库唯一主键方案二&#xff1a;数据库乐观锁方案三&#xff1a;防重 Token 令…

Redis为什么变慢了?一文详解Redis性能问题 | 万字长文

Redis 作为优秀的内存数据库&#xff0c;其拥有非常高的性能&#xff0c;单个实例的 OPS 能够达到 10W 左右。但也正因此如此&#xff0c;当我们在使用 Redis 时&#xff0c;如果发现操作延迟变大的情况&#xff0c;就会与我们的预期不符。你也许或多或少地&#xff0c;也遇到过…

蜕变成蝶~Linux设备驱动之字符设备驱动

一、linux系统将设备分为3类&#xff1a;字符设备、块设备、网络设备。使用驱动程序&#xff1a; 字符设备&#xff1a;是指只能一个字节一个字节读写的设备&#xff0c;不能随机读取设备内存中的某一数据&#xff0c;读取数据需要按照先后数据。字符设备是面向流的设备&#x…

感动哭了!《Java 编程思想》最新中文版开源!

前言还记得这本书吗&#xff1f;是不是已经在你的桌上铺满厚厚的一层灰了&#xff1f;随着 Java 8 的出现&#xff0c;这门语言在许多地方发生了翻天覆地的变化。最新版已经出来了&#xff0c;在新的版本中&#xff0c;代码的运用和实现上与以往不尽相同。本书可作为编程入门书…

韩信大招:一致性哈希

作者 | 悟空聊架构来源 | 悟空聊架构韩信点兵的成语来源淮安民间传说。常与多多益善搭配。寓意越多越好。我们来看下主公刘邦和韩信大将军的对话。刘邦&#xff1a;“你觉得我可以带兵多少&#xff1f;”韩信&#xff1a;“最多十万。”刘邦不解的问&#xff1a;“那你呢&#…