UIView 视图回调 使用

      在自定义一个UIView视图时,通常我们需要给自定义的视图从外部传递一些信息到这个视图中,之前我的写法是创建一个方法比方:(initView),在这个方法中我重新创建一些子视图或者进行其他的操作,这样做的确是挺好,但昨天在网上看到有人使用了UIView的回调方法来初始化一些视图,的确也是一件挺不错的事,至少在外部不需要去显示的调用这个initView了。

UIView常用的回调方法:

1. 调用addSubView:成功后会给这个视图发送didAddSubView:回调,出发UIView的子类在新增视图时执行其他的操作;

2. didMoveToSuperView会通知相关视图它们的上级视图已经改变;

3.视图移动前会发出willMoveToSuperVIew:回调;

4.didMoveToWindows:和didMoveToSuperView:类似,第一个是添加到window上,第二是添加到父视图上;

5.willMoveToWindos:在视图移动前发出的回调;

6.willRemoveToSubView:回调通知父视图,子视图即将被删除

这里我以didMoveToSuperView为例,我有一个继承自UIView的CustomerView,

在CustomerView代码:

CustomerView.h 有一个属性

NSString *imageName;

实现它的set get方法,

CustomerView.m中,添加didMoveToSuperView回调方法:

   1:  - (void)didMoveToSuperView
   2:   
   3:  {
   4:   
   5:      UIImageView *imageView = [[UIImageView alloc] initWithImage[UImage imaged: self.imageName];
   6:     [self addSubView:imageView];
   7:     [imageView release]; 
   8:   
   9:  }
  10:   

创建CustomerView类

CustomerView *customerView = [[CustomerView alloc] initFrame:CGRectMake(0,0,200,200)];

[customerView setImageName:@“1.png”];

[self.view addSubView:customerView];

[customerView release];

在添加customerView完视图后,该视图会自动回调 didMoveToSuperView方法;

 

判断一个点在不在一个视图上的方式:

1.CGRectContainsPoint(view.frame,point); 返回一个BOOL类型,

2.如果是在touch方法中,

   1:  [view pointInside:[touch locationInView:view] withEvent:event];

返回的也是一个BOOL类型

 

删除子视图的方式

1. for(UIView *subView in view.subviews){

       [subView removeFormSuperView];

}

2. [[view subviews] makeObjectsPerformSelector:@selector(removeFromSuperView)];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值