2013-04-16 3 views
1

У меня есть пользовательский подкласс UIView, который должен находиться в нижней части надзора. Я установил происхождение мнение, используя:Пользовательский UIView Размещение в пределах Superview

CGRect subviewFrame = subview.frame; 

CGPoint newOrigin = CGPointMake(0, superview.bounds.size.height - subviewFrame.size.height); 

subviewFrame.origin = newOrigin; 

[subview setFrame:subviewFrame]; 

Однако, это помещает подвид (origin.y) непосредственно за пределами вида рамы SuperView в.

Subview outside of frame

Если я использую:

CGPoint newOrigin = CGPointMake(0, superview.bounds.size.height - subviewFrame.size.height * 2.0f); 

получить результаты я хочу, что это подтаблица сидит на нижней части окна.

Subview inside of frame

Я не понимаю, почему я должен умножить высоту подвид на 2.

Если кто-то может сказать мне, что я пропускаю это было бы весьма признателен. Благодаря!

+0

Как насчет изображения, чтобы показать, что вы имеете в виду. Я не вижу ничего плохого в вашем коде. –

+0

Несомненно ... извините за размер. Благодаря! –

+2

Я уверен, что это связано с navBar. Вместо того, чтобы умножить ваше представление на 2, вычесть 44,0, а затем вычесть ваш подвид. И я уверен, что вы получите то, что хотите, и поймите, почему. –

ответ

1

Я использовал [UIScreen mainScreen] .bounds, чтобы получить начальный кадр, который не компенсирует статус и навигационные панели. UIScreen applicationFrame: возвращает фрейм за вычетом высоты строки состояния. Я использую этот метод и учитываю высоту навигационного барьера (44.0), чтобы получить желаемые результаты.

1

Полезный код для рисования границ UIView. KADebugShowViewBounds (супервизор, [UIColor redColor]) и KADebugShowViewBounds (subview, [UIColor redColor]). Вы увидите границы супервизора и subview в красном цвете. Я думаю, что проблема должна быть в вашем макете.

#import <Foundation/Foundation.h> 
#import <QuartzCore/QuartzCore.h> 

#ifndef KAViewDebugHelper_h 
#define KAViewDebugHelper_h 

#ifdef DEBUG 
#define KADebugShowViewBounds(aView, aColor) \ 
do \ 
{ \ 
    UIColor *color = [(id)aColor isKindOfClass:[UIColor class]] ? aColor : [UIColor redColor]; \ 
    aView.layer.borderColor = color.CGColor; \ 
    aView.layer.borderWidth = 1.0f; \ 
} \ 
while(0) 
#else 
#define KADebugShowViewBounds(aView) 
#endif 
#endif 
Смежные вопросы