在iOS中将UIView添加到另一个视图两次会发生什么?我相信它不会被添加两次。有人试过吗?
答案 0 :(得分:16)
[UIView addSubview:]
文档
视图只能有一个超级视图。如果视图已经具有超视图并且该视图不是接收者,则此方法会在使接收器成为新的超级视图之前删除先前的超视图。
答案 1 :(得分:1)
答案 2 :(得分:0)
也许您分配了两次UIView,但旧对象已被superView保留。
例如
UIView *viewA = [UIView new];
[superView addSubview:viewA];
viewA = [UIView new]; //there is a new object.
[superView addSubView:viewA];
另一个示例,同时实现init
和initWithFrame
方法。
@interface MyView : UIView
@property (strong, nonatomic) UIView *subView;
@end
@implement MyView
- (instancetype)init {
self = [super init];
if (self) {
self.subView = [UIView new];
[self addSubview:self.subView];
}
return self;
}
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.subView = [UIView new];
[self addSubview:self.subView];
}
return self;
}
@end
//init will call initWithFrame with CGRectZero automatically, subView alloced twice.
MyView myView = [[MyView alloc] init];