##一、Label文字居上显示的问题
此方法更加简单粗暴,但是很有效。其方法是在文本后面加多一些\n。
需要注意的是,\n后还得加至少一个空格,否则多余的\n会被UILabel忽略。
self.text = [self.text stringByAppendingString:@"\n "];
资料链接:https://blog.csdn.net/jiang314/article/details/52276063
##二、label文字居右对其
我们在使用的过程中发现,文字并非右对齐,设置方法。
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
//设置字间距 NSKernAttributeName:@1.5f
paraStyle.lineSpacing = 3;
//设置文字左右对其
paraStyle.alignment=NSTextAlignmentJustified;
NSDictionary *dic = @{NSFontAttributeName:[UIFont systemFontOfSize:18], NSParagraphStyleAttributeName:paraStyle, NSKernAttributeName:@1.5f};
NSAttributedString *attributeStr = [[NSAttributedString alloc] initWithString:NStr attributes:dic];
self.descriptionLabel.attributedText = attributeStr;
知识点:https://blog.csdn.net/u010105969/article/details/80591908
##三、页面嵌套多个CollectionView
由于要实现洪恩首页的效果,大致的界面是可以横向滑动的cell,以及纵向的cell交替展示,这样界面对用户更加友好。
使用header来添加CollectionView,使用相应的代理来判断点击的位置,同时设置自定义代理,用于View传递相应collection事件到controller中。
@protocol MCASBannerViewDelegate
@optional
/**
* indexPath:行
* section:区
* 拓展:我们还可以传对象,这样也是可以的。好了这回,思路清晰了。
*/
- (void)headerSectionRow:(NSIndexPath *)indexPath section:(NSInteger)section;
/*
个人缺点总结:
1.总是去找问题的解决方法,比如找第三方,然后还不仔细看,导致解决问题死慢,自己也是浮躁。
2.找到问题的思路,然后试着自己去解决,事实证明并没有想象的那么难。而且还会扩充自己的知识面。
*/
@end
##四、自定义代理
代理在项目传值是很常用的一种方式,在此记录一下,防止善忘。
1、设置代理方法。
@protocol HeaderDelegate
//可选项
@optional
/**
* 广告曝光回调
*/
- (void)bannerExposured;
//必选项
@required
/**
* indexPath:行
* section:区
* 拓展:我们还可以传对象,这样也是可以的。好了这回,思路清晰了。
*/
- (void)headerSectionRow:(NSIndexPath *)indexPath section:(NSInteger)section;
@end
2、声明代理
@property (nonatomic,weak) id delegate;
3、使用代理传值
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"张凯点击了界面中:%lu------区:%lu",indexPath.row,self.tag);
[self.delegate bannerViewDidReceived:indexPath section:self.tag];
}
4、接收代理,处理数据。
添加并调用代理。
headerV.delegate = self;
- (void)bannerViewDidReceived:(NSIndexPath *)indexPath section:(NSInteger)section{
//进行页面的跳转
NSLog(@"~~~~~~~~~~~~~~~~~~~~~~~~~~~进行页面的跳转Head2的row:%lu----------section:%lu",indexPath.row,section);
[self.navigationController pushViewController:[NextViewController new] animated:YES];
}
##五、Block的使用
block在传值方面有很多的应用,尤其是自定义网络请求的返回值上广为应用。下面为简单的例子:
1、定义block块。
typedef void(^ManageBlock)(BOOL isSucceed, NSString *message, id result);
2、传入Block中数据
- (void)resultMessage:(ManageBlock)block{
block(YES,@"message",@"data");
}
3、提取出block中的数据
[headerV resultMessage:^(BOOL isSucceed, NSString *message, id result) {
NSLog(@"~~~~~~~~~~~~~~~~~~~~isSucceed:%i-----------message:%@------------result:%@",isSucceed,message,result);
}];
##六、px&&pt
pt全称为point,但中文不叫“点”,确切的说法是一个专用的印刷单位“磅”,大小为1/72英寸。所以它是一个自然界标准的长度单位,也称为“绝对长度”。
px就是表示pixel,像素,是屏幕上显示数据的最基本的点;
因此就有这样的说法,pixel是相对大小,而point是绝对大小。
##七、iOSXib布局后代码修改约束的值
连接:http://www.cnblogs.com/xiaoxiaoyublogs/p/5863890.html
##八、TableView的cell禁止点击
方法一:
cell.userInteractionEnabled =NO;
方法二:
_tableView.allowsSelection=NO;
方法三:
1、cell.selectionStyle =UITableViewCellSelectionStyleNone;
2、didSelectRowAtIndexPath中不实现点击动作。
注意:如果cell上有添加Button,方法一和方法二Button的点击动作也会被忽略掉,方法三可以避免这个问题。