ios sub view в симуляторе отображается вверх ногами - PullRequest
0 голосов
/ 28 февраля 2012

Я создал индикатор активности и метку под ним в подклассе uiview и вызывал его во многих различных вкладках. Он работает так, как задумано, в большинстве мест, где я его вызываю, за исключением представлений хоста графика (CPTGraphHostinView). В этом конкретном представлении подпредставление выглядит перевернутым. Метка находится над вращателем. Я пробовал с изображением вместо метки и таким же перевернутым изображением.

Вот мой метод initWithframe

- (id)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];
    if (self) {
       // Initialization code.

        NSLog(@"AI: init with frame");

    spinnerView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    spinnerView.center = self.center;       
    [self addSubview:spinnerView];

    UILabel* loadingMsg = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 90.0f, 30.0f)];
    loadingMsg.center =  CGPointMake(spinnerView.center.x , spinnerView.center.y + spinnerView.bounds.size.height/2 +10);
    loadingMsg.textAlignment = UITextAlignmentCenter;
    loadingMsg.backgroundColor = [UIColor clearColor];
    loadingMsg.text = @"loading";
    [self addSubview:loadingMsg];


}
    return self;
}

Вот вызов ActivityIndicator в представлении сделал загрузку

ob_activityobject = [[ActivityIndicator alloc] initWithFrame:self.view.bounds];

    [ob_activityobject showInView:self.view];

enter image description here

Ответы [ 4 ]

5 голосов
/ 28 февраля 2012

Вы не должны добавлять другие представления в качестве подпредставлений представления размещения графического графика Core Plot.Как вы обнаружили, он применяет к своему содержимому флип-трансформацию, чтобы один и тот же код рисования можно было использовать совместно с версиями для OS X и iOS.

Вместо этого сделайте свой счетчик братом в представлении хостинга (т. Е.сделать их подпредставлениями одного и того же родителя).

1 голос
/ 19 июня 2012

Вы должны использовать преобразование, чтобы перевернуть его только в направлении х

Просто сделайте это:

loadingMsg.layer.transform = CATransform3DMakeRotation(M_PI, 1, 0, 0);
spinnerView..layer.transform = CATransform3DMakeRotation(M_PI, 1, 0, 0);

Это должно работать нормально:)

0 голосов
/ 28 февраля 2012

Да, это зависит от того, как вы инициализируете ваш ActivityIndicator, т.е. от его фрейма. Потому что вид индикатора активности отображается в центре. Но для UILabel вы исправили положение. Так что, если кадр большой для ActivityIndicator, очевидно, что индикатор активности будет находиться ниже UILabel.

0 голосов
/ 28 февраля 2012

Поддерживало ли ваше приложение ротацию устройства? Это может быть то, что вызывает эту проблему. Попробуйте установить маску авторазмера в UIViewAutoresizingNone

Надеюсь, что эта помощь

...