1. 判断一个subView是否可见的方法。
viewWillAppear 和 viewWillDisAppear 并不像字面意思所表述的一样,不能用来判断一个View是否可见。
viewWillAppear: addSubView时被调用
viewWillDisAppear: removeFromSuperView时被调用
添加另外一个subview(覆盖住原先的subview)时不会触发原来的view的viewWillDisAppear方法,虽然它对用户来说已经是不可见了。
判断一个view是否可见可以使用下面的方法:
- (BOOL)isVisible { //Note: The last object of the subviews array is the most front one. if ([self.view.window.subviews lastObject] == self.view) { return YES; } else { return NO; } }
2. 为什么要写self = [super init]?
[super init]的返回值有三种可能:
1. 初始化继承的实例变量,返回self,即self = self
2. 返回nil,表明初始化失败
3. 返回一个不同的对象,这种情况比较少见,只在基类是单例,或Class Cluster等情况下发生。
3. Iphone 5 上调用[UIScreen mainScreen]获取屏幕尺寸
在xcode4.5上,连接Iphone 5并调用[[UIScreen mainScreen] bounds]返回的依旧是老的(320,480)分辨率,你需要在程序的bundle中加入一张Default-568h.png的图片,才能使程序运行在iphone5的沙盒中。一个方便的方法是修改launch image。
4. [UIView layoutSubviews]什么时候会被调用?
8. setBackgroundImage:Forstate 和 setImage:Forstate:的区别
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
12. UILabel 换行
label.lineBreakMode =UILineBreakModeWordWrap;
label.numberOfLines = 0; //默认为1 设为0取消行数限制
13. UITableView 隐藏某一个section
numberOfRowsInSection
隐藏一个tableView中的某一个section需要修改三个回调:numberOfRowsInSection
heightForHeaderInSection
heightForFooterInSection
在这三个回调中对于该section均返回0值,但是,值得注意的是,heightForHeaderInSection和heightForFooterInSection这两个回调会忽略返回的零值的情况,所以,我们还需要通过tableView的两个属性sectionHeaderHeight和sectionFooterHeight来将section的头尾高度设为0。