项目中遇到的问题

##一、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 <NSObject>

@optional

/**
 *  indexPath:行
 *  section:区
 *  拓展:我们还可以传对象,这样也是可以的。好了这回,思路清晰了。
 */

- (void)headerSectionRow:(NSIndexPath *)indexPath section:(NSInteger)section;
/*
 个人缺点总结:
 1.总是去找问题的解决方法,比如找第三方,然后还不仔细看,导致解决问题死慢,自己也是浮躁。
 2.找到问题的思路,然后试着自己去解决,事实证明并没有想象的那么难。而且还会扩充自己的知识面。
 */

@end

##四、自定义代理
代理在项目传值是很常用的一种方式,在此记录一下,防止善忘。
1、设置代理方法。

@protocol HeaderDelegate <NSObject>

//可选项
@optional
/**
 *  广告曝光回调
 */
- (void)bannerExposured;


//必选项
@required
/**
 *  indexPath:行
 *  section:区
 *  拓展:我们还可以传对象,这样也是可以的。好了这回,思路清晰了。
 */

- (void)headerSectionRow:(NSIndexPath *)indexPath section:(NSInteger)section;

@end

2、声明代理

@property (nonatomic,weak) id<HeaderDelegate> 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的点击动作也会被忽略掉,方法三可以避免这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值