iOS--UI
Don't know if it helps your specific problem, however UITextAlignmentCenter does work if you use initWithStyle:UITableViewCellStyleDefault
loadView
loadView仅仅应该在开发者希望自行通过编码而不是Interface Builder定制view的时候被实现,而且不应该在其中调用[super loadView],你的loadView中应该有self.view = xxx这样的行为。
如果仅仅是想要在当前view上增加一些UIButton或是UILabel,应该在viewDidLoad里使用[self.view addSubView:xxx]去做,此时不要实现自己的loadView。下面是重写loadView的一个案例。
- ( void ) loadView {
UIView *view = [ [ UIView alloc] initWithFrame:[ UIScreen
mainScreen] .applicationFrame] ;
[ view setBackgroundColor:_color] ;
self.view = view;
[ view release] ;
}
你在控制器中实现了loadView方法,那么你可能会在应用运行的某个时候被内存管理控制调用。 如果设备内存不足的时候, view 控制器会收到didReceiveMemoryWarning的消息。 默认的实现是检查当前控制器的view是否在使用。 如果它的view不在当前正在使用的view hierarchy里面,且你的控制器实现了loadView方法,那么这个view将被release, loadView方法将被再次调用来创建一个新的view。
如何修改默认返回按钮的title
A视图-->B视图
现在想改变B视图返回A视图的返回按钮的title,只需在A视图中加上如下代码:
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@"返回"
style:UIBarButtonItemStylePlain
target:self
action:nil];
B视图不用做任何操作。
The backBarButtonItem exists specifically to change the appearance of the back button. If you need a custom action, you should consider using leftBarButtonItem instead.
下面就是使用leftBarButtonItem代替backBarButtonTtem的代码段,在B视图中viewDidLoad函数中实现。
在使用中发现,这样的实现其实是有问题的。返回按键只在B页面完全加载之后才出现,也就没有了从右向左滑入的效果。
//返回按键
UIBarButtonItem *backBarBtn = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backItemAction:)];
UIImage *originalImage_normal = [UIImage imageNamed:@"nav_bar_back_button_normal.png"];
UIImage *originalImage_selected = [UIImage imageNamed:@"nav_bar_back_button_selected.png"];
UIImage *image_normal;
UIImage *image_selected;
// 拉伸图片
if ([[UIImage class] respondsToSelector:@selector(resizableImageWithCapInsets:)]) {
image_normal = [originalImage_normal resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12.5, 0, 7.5)];
image_selected = [originalImage_selected resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12.5, 0, 7.5)];
}
else {
image_normal = [originalImage_normal stretchableImageWithLeftCapWidth:12.5 topCapHeight:0];
image_selected = [originalImage_selected stretchableImageWithLeftCapWidth:12.5 topCapHeight:0];
}
[backBarBtn setBackgroundImage:image_normal forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[backBarBtn setBackgroundImage:image_selected forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
self.navigationItem.leftBarButtonItem = backBarBtn;
self.navigationItem.leftBarButtonItem.target = self;
[backBarBtn release];
获取iphone屏幕的宽度
CGRect r = [ UIScreen mainScreen ].applicationFrame;
r=0,20,320,460
CGRect rx = [ UIScreen mainScreen ].bounds;
r=0,0,320,480
在cell中添加subview图片
cell.inputView 或者 cell.contentView
// Configure the cell...
for (UIImageView *item in [cell.contentView subviews]) {
if ([item isKindOfClass:[UIImageView class]]) {
[item removeFromSuperview];
}
}
模态视图 presentModalViewController
-(void)firstpressed
{
//[[(ASSAppDelegate*)[UIApplication sharedApplication].delegate topStatusBar] setHidden:NO];
[self.navigationController presentModalViewController:[[ASSRootViewController alloc] init] animated:YES];
}
关于覆盖层
下面是一段覆盖层的代码,特点是使用了keyWindow。
- (id)init
{
CGRect frame = CGRectMake(0, 0, 320.0f, 400.0f);
if((self = [super initWithFrame:frame]))
{
[super setBackgroundColor:[UIColor clearColor]];
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIImageView *dimView = [[UIImageView alloc] initWithFrame:keyWindow.bounds];
dimView.image = [self backgroundGradientImageWithSize:keyWindow.bounds.size];
dimView.userInteractionEnabled = YES;
[keyWindow addSubview:dimView];
[self setCenter:CGPointMake(dimView.frame.size.width/2, dimView.frame.size.height/2)];
[dimView addSubview:self];
//...
}
}
removeFromSuperview
[_overlay removeFromSuperview]; [_transition removeFromSuperview];
_overlay等在removeFromSupperview之后就会被释放掉(release)。
If the receiver’s superview is not nil, the superview releases the receiver. If you plan to reuse a view, be sure to retain it before calling this method and release it again later as appropriate.
IOS中view页面的堆栈操作
[self.navigationController popViewControllerAnimated:YES];
headView使用addSubview之后,不能够delease
UIView* headView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 30)]; headView.backgroundColor = [UIColor redColor]; UILabel* headLabel = [[UILabel alloc] initWithFrame:CGRectMake(20,10, 200, 21)]; headLabel.backgroundColor = [UIColor greenColor]; headLabel.text = @"Available control system"; headLabel.textColor = [[UIColor alloc] initWithRed:128.0/255.0 green:133.0/255.0 blue:141.0/255.0 alpha:1.0]; //headLabel.center = CGPointMake(headLabel.frame.size.width/2+18, headView.frame.size.height-headLabel.frame.size.height/2); headLabel.shadowColor = [UIColor whiteColor]; headLabel.shadowOffset = CGSizeMake(0.0f, 0.5f); [headView addSubview:headLabel]; [headView addSubview:self.scaningIndicatorView]; //[headView release];