通过UIViewController以编程方式实现UIView

时间:2012-06-15 17:07:53

标签: iphone ios uiview uiviewcontroller

我试图了解UIView必须覆盖哪些方法才能显示内容。

我有一个非常简单的应用程序:

  1. 有一个UIViewController

  2. 有UIView

  3. UIView使用视图的大小创建一个屏幕外图像,并在drawRect中绘制图像

  4. 问题:

    1. 我应该如何创建视图?调用initWithRect?或者只是初始化?我想以编程方式进行,没有故事板或笔尖。

    2. 当UIViewController设置视图边界时,调用UIView的方法是什么?我怎样才能获得这些界限(能够创建屏幕外图像)。

    3. 有人知道我在哪里可以找到UIImageView的来源吗?

    4. 注意:我一直试图这样做4天,没有成功。

3 个答案:

答案 0 :(得分:3)

1。)initWithFrame:

1。)默认情况下,没有设置边界时自动调用的方法。如果您继承UIView,则可以根据需要覆盖setBounds方法。

2。)UIImageView的来源?..标题类可在CoreFoundation.framework中找到。

答案 1 :(得分:0)

这就是我在UIViewController中使用UIView并在UIViewController中添加UIVmageView和UITextView作为UIView的子视图时没有显示UITextview的代码,因为你没有在你的问题中询问它。

- (void)viewDidLoad
{
    UIView *baseView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    [self.view addSubview:baseView];
    [baseView release];

    // Displays UIImageView
    UIImageView* ImageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 5, 300, 235)];
    self.view.backgroundColor = [UIColor brownColor];

    // load all the frames of our animation
    ImageView.animationImages = [NSArray arrayWithObjects:    
                                    [UIImage imageNamed:@"1a.png"],
                                    [UIImage imageNamed:@"1b.png"],
                                    nil];

    // all frames will execute in 25 seconds
    ImageView.animationDuration = 25; 

    // start animating
    [ImageView startAnimating];
    ImageView.layer.borderWidth = 2;
    ImageView.layer.borderColor = [[UIColor whiteColor]CGColor];
    [ImageView.layer setMasksToBounds:YES];
    [ImageView.layer setCornerRadius:15.0f];

    [baseView addSubview:ImageView]; 
}

希望它对你有所帮助。

答案 2 :(得分:0)

您需要在自定义ViewController类中覆盖-(void)loadView

UIView *baseView = [[UIView alloc] init];
self.view = baseView;
[super loadView];

从那里你可以创建一个自定义的UIView,它添加了ViewController的view属性。