UIView(包括子类)初始化,被添加时执行的几个动机

根据你需要执行的动作, 这里有几个方法:

  • -(id)initWithFrame:(CGRect)frame - UIView的指定初始化方法; 总是发送给UIView去初始化, 除非是从一个nib文件中加载的;
  • -(id)initWithCoder:(NSCoder *)coder - 从nib文件中加载的时候发送此消息给UIView;
  • -(void)awakeFromNib - 在所有的nib中的对象初始化和连接后将发送此消息; 只适用于从nib加载对象; 如要重写,其中还必须调用父类的awakeFromNib;
  • -(void)willMoveToSuperview:(UIView *)newSuperview - 在一个子视图将要被添加到另一个视图的时候发送此消息;
  • -(void)willMoveToWindow:(UIWindow *)newWindow - 在一个视图(或者它的超视图)将要被添加到window的时候发送;
  • -(void)didMoveToSuperview - 把一个视图插入到视图层级之后发送此消息;
  • -(void)didMoveToWindow - 当视图获得它的window属性集的时候发送此消息.

基本上, 你能选择: 在你的视图初始化期间执行的动作 (1 & 2), 在从nib文件中加载的时候 (3), 在插入到视图层级之前 (4 & 5) 和 之后 (6 & 7).

UIView类是iOS和macOS平台上的基本视图容器,它是所有用户界面控件的基础。它并不直接提供一个标题属性用于初始化,因为UILabel或其他专门处理文本的UI元素更适合展示title这样的信息。但是,如果你想要自定义一个视图并包含标题,你可以通过以下步骤创建: 首先,创建一个新的UIViewController或自定义UIViewController子类,然后在其中添加一个UIView,并为其设置子视图(如UILabel): ```swift import UIKit class CustomViewContainerViewController: UIViewController { private let containerView = UIView() override func viewDidLoad() { super.viewDidLoad() // 创建UILabel并在containerView上添加 let titleLabel = UILabel() titleLabel.text = "Title" // 设置标签的位置、字体等样式(这里假设居中对齐) titleLabel.center = view.safeAreaLayoutGuide.center titleLabel.textAlignment = .center // 将UILabel添加到containerView中 containerView.addSubview(titleLabel) // 添加containerView到view hierarchy view.addSubview(containerView) // 可能还需要设置containerView的frame或者其他布局约束 containerView.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ containerView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor), containerView.leadingAnchor.constraint(equalTo: view.leadingAnchor), containerView.trailingAnchor.constraint(equalTo: view.trailingAnchor), containerView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor) ]) } } ``` 在这个例子中,我们并没有直接给`UIView`传递"title"作为参数,而是创建了一个单独的UILabel来显示标题。如果你需要更复杂的自定义视图,可以考虑扩展UIView的行为或使用MVC架构将title相关的逻辑分离到另一个视图模型层。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值