如何子类化 UILabel、UIButton 等 UI 元素

2024-02-10

我正在子类化UILabel in a CustomLabel class。当我尝试使用简单的方法时遇到问题UILabel我希望将来对其他元素进行子类化。我读到我可以创建一个category of UILabel。这东西哪一个比较好呢?类别还是子类?

这是我尝试子类化的代码。它失败于setFont method.

@interface WPCustomLabel : UILabel

@property (strong, nonatomic) UIColor *color;
@property (strong, nonatomic) UIFont  *font;

@end

#import "WPCustomLabel.h"

@implementation WPCustomLabel

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

        [self setBackgroundColor:[UIColor clearColor]];

    }
    return self;
}

-(void)setColor:(UIColor *)color
{
    self.color = color;
}

-(void)setFont:(UIFont *)font
{
    self.font = font;
}

@end

我在 ViewController 中将此称为 CustomLabel。

@property (strong, nonatomic) WPCustomLabel *titleLbl;

titleLbl = [[WPCustomLabel alloc] initWithFrame:CGRectMake(75, 25, 200, 14)];
[titleLbl setTextColor:[UIColor blackColor]];
[titleLbl setFont:[UIFont systemFontOfSize:14]];
[titleLbl setBackgroundColor:[UIColor clearColor]];
[titleLbl setText:@"Here I AM"];
[self.view addSubview:titleLbl];

如何子类化 UILabel、UIButton 等 UI 元素

绝不。

我读到我可以创建一个类别UILabel

这是正确的。事实上,如果你想extend类,您可能应该使用类别来代替(请参阅前面的答案)。

setFont 方法失败。

您没有说明它是如何“失败”的,但我只能猜测它会导致无限递归并因此导致堆栈溢出/分段错误。那是因为

self.font = font;

相当于

[self setFont:font];

因此,您无条件地从自身内部调用该方法。

如果您不需要自定义这些属性的行为,则无需理会它们。 :)如果你这样做,然后完成后调用超类的实现:

- (void)setFont:(UIFont *)font
{
    [self doScaryCustomMagicStuff];
    [super setFont:font];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何子类化 UILabel、UIButton 等 UI 元素 的相关文章

  • 正在解除分配时尝试加载视图控制器的视图... UISearchController

    我有创建一个的代码UISearchController in my UIVIew sviewDidLoad self resultSearchController let controller UISearchController sear
  • 应用因广告标识符 (IDFA) 被拒绝

    我的申请因以下原因被拒绝 您和您的应用程序 以及与您有联系的任何第三方 签订广告服务合同 可以使用广告标识符 以及通过使用广告获得的任何信息 标识符 仅用于服务广告的目的 如果一个用户 重置广告标识符 则您同意不合并 直接或间接关联 链接或
  • iOS:保持应用程序在后台运行

    如何让我的应用程序在后台运行 我需要越狱我的 iPhone 才能执行此操作吗 我只需要这个应用程序每隔设定的时间间隔从互联网上检查一些内容 并在需要时发出通知 以供我自己使用 是的 不需要越狱 查看本文档的 实现长时间运行的后台任务 部分A
  • 使用 NSJSONSerialization 解析 JSON

    对此进行了太多讨论 但我不知道如何解决我的问题 这是我从 WorldWeatherOnline 获取的 JSON 数据 JSON 有效 但我不知道如何解析它 这是我的代码 后面是 JSON 请帮忙 NSError errorInfo NSD
  • 如何创建一个 NSMutableArray 并为其分配一个特定的对象?

    我刚刚开始接触 Obj C 并且希望创建一个 MKAnnotations 数组 我已经创建了名为的 MKAnnotation 类TruckLocation其中包含名称 描述 纬度和经度 这是到目前为止我所拥有的数组 NSMutableArr
  • 设置使用 iPhone 相机拍摄的图像的类型

    如果我们使用 iPhone 相机拍摄照片 图像将默认以 JPEG 格式保存 我想以其他格式 例如 PNG 保存捕获的图像 是否可以 当我们从应用程序调用 iPhone 相机时 是否可以通过代码执行此操作 我们可以设置捕获图片后必须保存的图像
  • iOS UITableViewCell需要按两次才能调用didSelectRowAtIndexPath

    我有一个 UITableView 有时需要您触摸它两次才能选择一个单元格 更多细节 仅当表格一直向上或一直向下滚动后才需要两次触摸 只需第二次触摸即可呼叫didSelectRowAtIndexPath 当表格以自然的 向上滚动位置 打开时
  • 在 UITableView 中设置滚动位置

    我有一个应用程序 其工作方式与 iPhone 的 联系人 应用程序的工作方式有些相似 当我们添加新的联系人时 用户将被定向到包含联系人信息的仅查看屏幕 如果我们从导航栏中选择 所有联系人 用户将导航到查看最近添加的联系人的所有联系人列表 我
  • 如何在 Monotouch 中对 UIImageView 进行运动模糊效果?

    在 MonoTouch 中进行实时运动模糊的方法是什么 当滚动惯性图片库时 我需要在 UIImageView 上应用运动模糊效果 以强度和方向作为参数 就像在 Photoshop 中一样 我在 CocoaTouch 或 CoreAnimat
  • 如何改进 iOS 中的 TWTweetComposeViewController 代码?

    我已经实现了以下代码来进行 Twitter 共享 在我的代码中 我尝试测试 iOS 5 如果这不起作用 我会回到使用 ShareKit 的 Twitter 代码进行共享的旧方式 我向同事展示了代码 他建议我的代码可能有缺陷 我需要做两件事
  • 替代已弃用的 NSNibLoading 方法(loadNibFile:、loadNibNamed: 等)?

    我发现 NSBundle 中的 NSNibLoading 方法 NSBundle loadNibFile externalNameTable withZone NSBundle loadNibNamed owner NSBundle loa
  • 应用程序在第二次运行 nsnull 计数的循环时崩溃

    我有一个循环 第一次运行正常 但第二次循环时我得到 NSNull count unrecognized selector sent to instance 0x3a094a70 Terminating app due to uncaught
  • CoreAnimation 性能分析 - CAReplicatorLayer 与 CAShapeLayer

    我正在制作一个依赖 CoreAnimation 的应用程序 它有一个 CAReplicatorLayer 和一个 CAShapeLayer 作为子层 当进行 12 次复制 然后对路径进行动画处理 在 touchMoved 上更改它 时 一旦
  • 使用 Mono Touch 的 Iphone 键盘顶部带有完成按钮的工具栏?

    我需要使用 UIkeyboard type 数字键盘在工具栏上添加完成按钮 以便在单击完成按钮时退出键盘 我使用了输入附件视图 但它也添加到普通键盘 我需要在我有数字键盘的地方添加这个 例如 我有一个文本字段 它只需要我需要的数字 除了我不
  • iOS UITableViewCell 配件在左侧?

    对于我的应用程序 我想要一些可以同时具有复选标记和详细信息披露按钮的单元格 也就是说 我希望它们看起来与 iOS 设置中的 Wi Fi 网络选择一模一样 左侧的复选标记 中间的内容 右侧的详细信息披露按钮 有没有正确的方法来做到这一点 或者
  • 找不到导航对象。您的组件是否位于导航器屏幕内?

    在我下面的代码中 当我使用 useNavigation 时 它会给出像我的问题一样的错误 如何使用useNavigation 请任何人都可以解决此错误 错误 找不到导航对象 您的组件是否位于导航器屏幕内 我从这里跟踪了代码https rnf
  • iphone:通过代码获取目标设置中的用户定义变量?

    我的项目有多个目标 每个目标都有自己的目标Class用于设置内容的文件 我想存储它Class目标设置中的名称 Info plist或目标的建筑物设置 这样我就可以根据此设置定义每个目标中需要使用哪个类 根据这个问题 https stacko
  • Swift 中的弹出视图

    我有一个弹出视图 没有选项卡栏 它弹出到带有选项卡栏的视图控制器 在带有选项卡栏的视图控制器中 我设置了一个单击按钮 以便弹出视图控制器 IBAction func PopUpClicked sender UIButton gt Void
  • 在 UITableviewCell 高度动画的同时动画 CALayer 阴影

    我有一个 UITableView 我正在尝试使用它来展开和折叠beginUpdates and endUpdates方法并在发生时显示阴影 在我的自定义 UITableViewCell 中 我有一个图层 我为其创建阴影layoutSubvi
  • 使用 JavaScript 从 URL 变量读取来加载不同的 CSS 样式表

    我试图在我的 WordPress 博客上使用两个不同的样式表 以便在通过 Web 访问页面时使用一个样式表 而在通过我们的 iOS 应用程序访问博客内容时使用另一个样式表 现在 我们将 app true 附加到来自 iOS 应用程序的 UR

随机推荐

  • Cassandra - 具有相同时间戳的混合列更新的冲突解决方案

    我想知道在具有相同客户端时间戳的两次更新的情况下哪个写入获胜 初始数据 KeyA col1 val AA col2 val BB col3 val CC 客户端1发送更新 KeyA col1 val C1 col2 val B1 客户端2发
  • 涉及私有继承的 C++ 编译器错误

    有人可以向我解释以下编译器错误吗 struct B template
  • 更新生产 ASP.NET 网站 bin 文件夹中的 DLL

    我想更新生产 Web 应用程序中的类库 单个 DLL 文件 该网络应用程序已预编译 已发布 我在 StackOverflow 上读到了一个答案 抱歉 似乎找不到它了 因为搜索功能不能很好地工作 这让我相信我可以将新的 DLL 粘贴到 bin
  • 如何对 pandas 中的两个字段进行分组?

    给定以下输入 目标是使用 Avg 和 Sum 函数按每个日期的小时对值进行分组 按小时分组的解决方案是here https stackoverflow com questions 34941903 how group by sum and
  • 无法使用新的 Vagrant 安装 - 连接到 libvirt 时出错

    无论我是否有 Vagrant 文件 或者如果该文件不存在 我都会创建自己的文件vagrant init 顺便说一句 它有效 尝试执行此操作时出现错误 vagrant up 错误是 1 from usr share rubygems inte
  • 当 ObservableCollection 值更新时,WPF Datagrid 绑定不更新

    我有一个 WPF DataGrid 绑定到一个名为 Personnel 的 ObservableCollection 我在 DataGrid 中有一个可编辑的 DataGridCheckBoxColumn CheckBoxColumn 绑定
  • cfspreadsheet 以 d 结尾的字母数字值

  • Laravel 5 将视图和模型保留在资源视图目录中的单独文件夹中

    我已经搜索了很多我的要求 但没有找到适合我的工作解决方案 我正在使用 laravel 5 创建一个 Web 应用程序 我想将与管理员访问权限相关的所有控制器保留到控制器文件夹中的管理子文件夹中 为此我找到了很好的答案Laravel 控制器子
  • 如何在 YAML 中指定范围?

    我可以表达 第三页是扉页 in YAML title 3 那么下面的呢 第 10 至 15 页包含第 1 章 一种方法是 chapter 1 10 11 12 13 14 15 我更喜欢这里的范围 YAML中有类似的东西吗 chapter
  • 如何在 Play 中的静态方法中使用 play.cache.CacheApi!框架2.4.2

    我有一个 play 框架应用程序 我已将其迁移到 play 框架 2 4 2 上运行 它为 javascript html 前端提供 RESTful API 现在我在引入缓存时遇到了一些问题 LibraryController 将 JSON
  • Power Bi 中具有多轴的重叠条形图

    我想在 PowerBi 中有一个具有多个轴的重叠条形图 我有一个来自 Excel 的示例 如果可能的话 我希望在 PowerBi 中重新创建该示例 这里是例子 这在 PowerBi 中可能吗 也许通过使用我不知道的自定义视觉效果 提前致谢
  • AudioPlayer iOS 和 m4a

    我制作了一个使用 AVAudioPlayer 播放音乐的应用程序 它上传或下载歌曲 将它们写入核心数据 然后在选择时调用它们来播放 我测试过的所有 15 首歌曲都可以在 iPhone 音乐客户端和我自己的电脑上正常运行 但是 其中三个无法在
  • 动态复选框创建

    我想在我的 Android 应用程序运行时动态创建一组复选框 当应用程序运行时 除了按钮之外什么都不显示 我忘记了什么 提前致谢 public class DataNotificationSurvey extends Activity pr
  • 使用 PHP 在 CSV 文件中用双引号将每个字段括起来?

    我需要使用 PHP 将所有带有双引号的字符串和数字放入 CSV 文件中 如何从 PHP 创建 CSV 文件 并将所有数据放在双引号内 我正在使用此代码生成 CSV 我正在使用 codeigniter 框架 array array array
  • jQuery 切换 Cookie 支持

    我正在尝试将 jQuery Cookie 插件实现到我的幻灯片切换脚本中 但到目前为止尚未成功 这是我的代码 没有任何 cookie 实现 jQuery document ready function a toggle click func
  • Eclipse 缩进指南

    我正在尝试从以下网页安装 eclipse 的缩进指南插件 http sschaef github io IndentGuide http sschaef github io IndentGuide 我之前没有在 eclipse 中安装过插件
  • 进行机器间锁定有哪些好方法?

    我们的服务器集群由 20 台机器组成 每台机器有 10 个 5 个线程的 pid 我们想要某种方法来防止任何机器上任何 pid 中的任何两个线程同时修改同一个对象 我们的代码是用 Python 编写的并在 Linux 上运行 如果这有助于缩
  • 当应用程序在 WP 8.1 商店应用程序中恢复时,应用程序恢复事件不会触发

    我的 WP 8 1 商店应用程序的行为非常奇怪 当我快速离开然后返回时 应用程序恢复事件会按预期触发 但是 如果我将应用程序保留在后台一段时间 然后返回时 应用程序将触发 Constructor 和 OnNavigateTo 事件而不是 R
  • 检查 Rust 中的整数溢出[重复]

    这个问题在这里已经有答案了 Rust 有没有一种规范的方法来显式检查整数溢出 我用谷歌搜索但找不到答案 就像是 match add or overflow x y None gt println overflow Some z gt pri
  • 如何子类化 UILabel、UIButton 等 UI 元素

    我正在子类化UILabel in a CustomLabel class 当我尝试使用简单的方法时遇到问题UILabel我希望将来对其他元素进行子类化 我读到我可以创建一个category of UILabel 这东西哪一个比较好呢 类别还