UIScrollView addSubView: Как предотвратить повторное добавление того же экземпляра UILabel? - PullRequest
0 голосов
/ 25 июня 2011

Итак, очевидно, я добавляю один и тот же ярлык снова и снова.У меня есть IBOutlet для UILabel, который я подключил в IB.Я сделал это, потому что это позиция, в которой я хочу это для моего UIScrollView.Мне также нужен новый ярлык на каждой странице моего ScrollView, но я не могу понять, как это сделать.

Есть предложения, как этого добиться?Потому что я потерян: - /

AnotherMadeUpViewController.h

#import <UIKit/UIKit.h>

@interface AnotherMadeUpViewController : UIViewController<UIScrollViewDelegate>
{

    IBOutlet UIPageControl *pageControl;
    IBOutlet UIScrollView *scroller;
    IBOutlet UILabel *label;
}

@property (nonatomic,retain)IBOutlet UIPageControl *pageControl;
@property (nonatomic,retain)IBOutlet UIScrollView *scroller;
@property (nonatomic,retain)IBOutlet UILabel *label;


-(IBAction)clickPageControl:(id)sender;

@end

AnotherMadeUpViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    scroller.delegate=self;
    scroller.pagingEnabled=YES;
    scroller.directionalLockEnabled=YES;
    scroller.showsHorizontalScrollIndicator=NO;
    scroller.showsVerticalScrollIndicator=NO;
    scroller.contentSize=CGSizeMake(pageControl.numberOfPages*scroller.frame.size.width, scroller.frame.size.height);
    CGFloat labelOriginX = label.frame.origin.x;
    CGFloat labelOriginY = label.frame.origin.y;
    CGFloat scrollWidth = 0;
    int pageNumber = 0;
    for (int i=0; i<3; i++)
    {
        CGRect rect = label.frame;
        rect.size.height = label.frame.size.height;
        rect.size.width = label.frame.size.width;
        rect.origin.x = labelOriginX + scrollWidth;
        rect.origin.y = labelOriginY;
        label.frame = rect;
        label.text = [NSString stringWithFormat:@"%d", pageNumber];
        label.textColor = [UIColor redColor];
        [scroller addSubview:label];
        pageNumber++;
        scrollWidth += scroller.frame.size.width;
    }
    pageControl.numberOfPages=3;
    pageControl.currentPage=0;
    [self.view addSubview:scroller];
}

1 Ответ

1 голос
/ 25 июня 2011

Вы снова и снова добавляете один и тот же экземпляр UILabel, и ничего не происходит, кроме изменения местоположения метки (фрейма) в содержимом scrollView.Вам нужно добавить 8 копий этого ярлыка в scrollView, каждый в отдельном фрейме.Если вы хотите разместить изображение на фоне scrollView, попробуйте установить его backgroundColor для изображения шаблона, созданного с помощью + [UIColor colorWithPatternImage:]

...