我正在初始化一个加载器子视图,以匹配我用来包装我的应用程序的UITabBar的高度,宽度和位置:
// In UITabBarController implementation
LoaderView *loaderView = [[LoaderView alloc] initWithFrame:[self tabBar].viewForBaselineLayout.frame];
[[self view] addSubview:loaderView];
//
// LoaderView.h
#import <UIKit/UIKit.h>
@interface LoaderView : UIView
@property (nonatomic, strong) UILabel *messageLabel;
@property (nonatomic, strong) NSString *message;
@property (nonatomic) CGRect frame;
- (void)createLabel;
- (void)drawLoader;
- (void)setText:(NSString *)newMessage;
- (void)show:(NSNotification *)notification;
@end
//
// LoaderView.m
#import "LoaderView.h"
@implementation LoaderView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self drawLoader];
}
return self;
}
- (void)drawLoader
{
UIColor *semiOpaqueGray = [[UIColor alloc] initWithRed:0.0f green:0.0f blue:0.0f alpha:0.8f];
[self setBackgroundColor:semiOpaqueGray];
[self createLabel];
}
- (void)createLabel
{
_messageLabel = [[UILabel alloc] initWithFrame: CGRectMake(15,9,([self frame].size.width - 10), 30)];
_messageLabel.textColor = [[UIColor alloc] initWithWhite:1.0 alpha:1];
_messageLabel.backgroundColor = [[UIColor alloc] initWithWhite:1.0 alpha:0.0];
[self addSubview:_messageLabel];
}
@end
frame
结构表示此传入帧数据:
2013-09-16 07:48:35.552 ---[97825:a0b] {{0, 519}, {320, 49}}
// Ostensibly 0,519 origin point and 320,49 w/h
结果就是这样。可以在左上角看到大部分不透明的暗盒。看起来它正被装载机的中心点定位到屏幕的左上角:
我可以改变盒子的大小,但我似乎无法从左上角移动它。此外,我在其上设置了一个动画,该动画调整框架(从标签栏区域向下滑动)。这似乎也没有效果。
提前感谢您的帮助。
答案 0 :(得分:1)
您可以轻轻添加loadingView您的应用程序窗口。设置loaderView的框架后。
[loadView setFrame:CGRectMake(0,0,self.frame.size.width.,self.frame.size.height)];
[self.window addSubview:loaderView];
然后加载完成。
[self.window removeSubview:loaderView];
答案 1 :(得分:0)
你的超级视图就是问题所在。如果你将它添加到你的UINavigationController,那么y轴可能不会很好地响应。尝试使用控制器的主视图
loaderView.frame = CGRectMake(x, 514, 40, 320); // made up numbers
[self.mapView addSubview:loaderView];
此外,您正在访问tabBar。尝试使用UIDevice窗口获取宽度并从底部的标签继承高度(或在LoaderView中嵌套标签)
同时考虑实际使用UITabBar来处理这个问题。