将其作为子视图添加到uiscrollview后,自定义视图会消失

时间:2014-08-27 11:22:07

标签: ios objective-c uikit

我有一个自定义视图" BNRHyponsisView"继承自UIView。当我添加到滚动视图时,它会消失,向我显示背景颜色。

但添加到它的UITextField显示得很好,滚动也正常工作! 使用的参考文献很强,无论如何我都搜索过,无法找到答案!

- (void)loadView {
    self.bhv = [[BNRHyponsisView alloc] init];

    CGRect frame = CGRectMake(40, 70, 240, 30);
    UITextField *tf = [[UITextField alloc] initWithFrame:frame];
    tf.borderStyle = UITextBorderStyleRoundedRect;
    tf.placeholder = @"Hypnotize me!";
    tf.returnKeyType = UIReturnKeyDone;
    tf.autocapitalizationType = UITextAutocorrectionTypeDefault;
    tf.autocorrectionType = YES;
    tf.enablesReturnKeyAutomatically = YES;
    tf.delegate = self;
    [self.bhv addSubview:tf];


    UIScrollView *usv = [[UIScrollView alloc] init];
    usv.delegate = self;
    usv.pagingEnabled = NO;
    usv.minimumZoomScale = 1.0;
    usv.maximumZoomScale = 2.0;
    usv.contentSize = self.bhv.bounds.size;
    [usv addSubview:self.bhv];

    self.view = usv;
}

2 个答案:

答案 0 :(得分:0)

你错过了设置框架dude。

self.bhv = [[BNRHyponsisView alloc] init]initWithFrame:CGRectMake(0, 0, 200, 300);

self.bhv.backgroundColor = [UIColor orangeColor];

但为何显示UITextField?

BNRHyponsisView框架将是0,0,0,0(CGRectZero)。但它仍然在那里,但你的眼睛看不到。很小(因为0)。但是默认情况下,如果以编程方式创建子视图,任何UIView都不会剪辑(clipsToBounds)子视图。这就是它显示UITextField的原因。

答案 1 :(得分:0)

尝试为两者设置框架和背景颜色

  1. self.bhv i.e UIView

   self.bhv = [[BNRHyponsisView alloc] init]initWithFrame:CGRectMake(0, 0, 300, 350);
   self.bhv.backgroundColor = [UIColor redcolor];

  2. usv i.e UIScrollView
   usv = [[UIScrollView alloc] init]initWithFrame:CGRectMake(0, 0, 400, 400);
   usv.backgroundColor = [UIColor bluecolor];

希望这可以帮助您调试问题。