Как динамически добавить UIImageView к представлению и позиционированию элементов? - PullRequest
2 голосов
/ 30 октября 2011

У меня есть приложение, в котором оно читает документ XML, содержащий 2 поля (URL-адрес изображения и описание). Если в документе есть поле с действительным URL-адресом изображения, я хочу, чтобы представление отображало изображение. Иначе я просто хочу, чтобы он показал описание.

У меня проблема:

  1. как динамически показывать UIImageView
  2. как переместить UITextView вниз, так как теперь я добавил UIImageView

В настоящее время у меня просто есть представление с UITextView.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 30 октября 2011

1) -[UIView setHidden:], если UIImageView уже на месте. В противном случае, [[UIImageView alloc] initWithFrame:], затем добавьте представление изображения как подпредставление к представлению.

2) -[UIView setFrame:] (это один из вариантов)

1 голос
/ 30 октября 2011

Вот что вы могли бы сделать.

Подготовьте представление с помощью UIImageView и UITextView в viewDidLoad следующим образом:

-(void) viewDidLoad)
{
    [super viewDidLoad];
    myImageView = [[UIImageView alloc] init];
    myImageView.frame = CGRectMake(x,y,0,0); //you can set it at the right position and even set either the width OR the height depending on where you want the textView in my example I'm gonna assume its beneath the imageView
    //other imageView settings
    [myView addSubView:myImageView];

    myTextView = [[myTextView alloc] init];
    myTextView.frame = CGRectMake(x,y,width,heigh+CGRectGetMaxY(myImageView.frame)); //here you prepare the textView for the imageView and the space it takes. But doesn't get hindered by it if it's not there.
    //other textView settings.
    [myView addSubView:myTextView];

    //You would want this loading function about here OR after this loading has been occured.
    [self loadImageFromURL];
}

-(void)loadImageFromURL
{
    //get your image here.. or not

    if(imageHasLoaded) //some condition that gets set when your image has successfully loaded. (This should be done in a delegate (didLoadImageFromURL) if you have such thing prepared.
    {
        //myImageView.image = theLoadedImage;
        myImageView.frame = CGRectMake(x,y,theLoadedImageWidth,theLoadedImageHeight);
        //after you set the frame of the imageView you need to refresh the view
        [myView setNeedsDisplay];
    }
}

И это то, как вы должны динамически добавлять imageView с изображением и рамкой к некоторому представлению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...