【自编号:60】【AutoLayout中,怎样让ImageView保持固定的宽高比?比如1:1】

先将imageViewframe手动写成:宽20,高20,再勾选Aspect Ratio加入宽高比约束

【查看原文】 【2015-03-23 11:29:04 by beyond】






【自编号:61】【Cell中,先运行这个- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier,再运行这个-(void)awakeFromNib;】【2015-03-23 11:40:01 by beyond】






【自编号:71】【推断tableView滚动到了最后一行】
self.tableView.contentSize.height =contentOffset+bounds.size.height

【2015-03-23 15:27:43 by beyond】






【自编号:78】【错误installAppearanceSwizzlesForSetter】
原因是:[[UINavigationBar appearance] setTranslucent:NO]在iOS8中才有, 解决的方法:#define IOS8 [[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0 if(IOS8 && [UINavigationBar conformsToProtocol:@protocol(UIAppearanceContainer)]) { [[UINavigationBar appearance] setTranslucent:NO]; }

【2015-03-23 17:14:57 by beyond】






【自编号:79】【Unable to determine simulator device to boot】
原因:XCode不知道选择哪一个模拟器去执行app. 解决方法:退出全部XCode和模拟器,若还不行,就重新启动mac

【2015-03-23 17:24:04 by beyond】






【自编号:80】【打开模拟器】
XCode-->Open Developer Tool-->Simulator

【2015-03-23 17:24:48 by beyond】






【自编号:160】【自己主动定位:No. 3-1 Xianing Alley, No. 3-1 Xianing Alley, Wen'er Road Xixi Residential District, Xihu Hangzhou, Zhejiang China @ <+30.28138170,+120.14211600> +/- 100.00m, region (identifier <+30.28138150,+120.14211600> radius 49.29) <+30.28138150,+120.14211600>
radius 49.29m】【2015-03-24 09:46:15 by beyond】






【自编号:161】【自己主动定位:中国浙江省杭州市西湖区西溪街道文二路下宁巷3-1号, 中国浙江省杭州市西湖区西溪街道文二路下宁巷3-1号 @ <+30.28138170,+120.14211600> +/- 100.00m, region (identifier <+30.28138150,+120.14211600> radius 49.29) <+30.28138150,+120.14211600> radius 49.29m】【2015-03-24 09:49:49 by beyond】






【自编号:162】【UserDefault写入的文件夹是:/var/mobile/Applications/Library/Preferences/com.beyond.testUserD.plist】【2015-03-24 10:15:15 by beyond】






【自编号:165】【UILabel显示:标题。

。。

张数,设置NSLineBreakByTruncatingMiddle就可以】【2015-03-24 15:43:37 by beyond】






【自编号:179】【URL Schemes打开app】【进入网址】 【2015-03-25 11:59:52 by beyond】






【自编号:180】【URL Schemes打开app】【进入网址】 【2015-03-25 12:02:43 by beyond】






【自编号:184】【SDWebImage默认会永久缓存一张图片】
但假设同一个url下的图片是变化的。那临时想到的是用内存缓存,[imgView sd_setImageWithURL:url placeholderImage:imgPlace options:SDWebImageCacheMemoryOnly];

【2015-03-25 15:14:35 by beyond】






【自编号:186】【推断包括字符串NSRange】
NSRange range = [requestURLStr rangeOfString:@"sg31.com"];
if (range.length > 0) {
}
或者
if(range.location !=NSNotFound){
}

【2015-03-25 16:41:50 by beyond】






【自编号:195】【正则NSPredicate检查中文】
// 检查汉字,YES代表全是汉字
- (BOOL)isHanziCheck:(NSString *)str
{
// NSString *regex = @"[a-zA-Z\u4e00-\u9fa5][a-zA-Z0-9\u4e00-\u9fa5]+";
NSString *regex = @"[\u4e00-\u9fa5]{2,8}";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
if(![pred evaluateWithObject: str]){
/*
//此动画为在顶上显示文字
[MPNotificationView notifyWithText:@"昵称仅仅能由中文、字母或数字组成"
andDuration:0.5];
*/
return NO;
}
return YES;
}

【2015-03-27 10:14:24 by beyond】






【自编号:196】【无法在真机执行,XCode提示ineligible device】
解决的方法:在targets---->build settings---->iOS Deployment Target选择iOS6.1或者更低的版本号

【2015-03-30 09:36:17 by beyond】






【自编号:197】【CardI扫描卡没有反应】
 card.io only scans 5 card types (MasterCard, Visa, Discover, American Express, JCB),后面是stackoverflow的解答

【进入网址】
【查看原文】 【2015-03-30 11:34:15 by beyond】






【自编号:198】【pod install报错 版本号不兼容】
VKVideoPlayerTests` (iOS 5.0) is not compatible with `Expecta (0.3.2)` which,解决方法:将项目deployment改高一点如:6.1就可以

【2015-03-30 11:35:52 by beyond】






【自编号:199】【第3方_VKPlayer播放器】【进入网址】 【2015-03-30 11:42:41 by beyond】






【自编号:201】【Not a git repository】
fatal: Not a git repository (or any of the parent directories): .git
解决的方法:git init 就可以

【2015-03-30 11:58:48 by beyond】






【自编号:202】【OCR图像识别】
能够实现相似taobaoclient扫描银行卡号的功能

tid=123463" target="_blank">【查看原文】 【2015-03-30 14:49:13 by beyond】






【自编号:208】【往模拟器里加入照片的最简单的方法:直接把照片拖到模拟器上就能够了】【2015-03-31 13:44:57 by beyond】






【自编号:209】【特效滤镜】

archive_path=%2F%5Bappcodes.org%5D-InstaFilters-120927%2Fdiwu-InstaFilters-d841f80&category_id=4&rName=[appcodes.org]-InstaFilters-120927.zip" target="_blank">【点击下载】 【2015-03-31
13:46:07 by beyond】






【自编号:210】【DLog】
#ifdef DEBUG
#define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#define DLog(...)
#endif

【2015-03-31 18:55:00 by beyond】






【自编号:211】【怎样设置appIcon】
点击targets--->general--->use asset catalog

【查看原文】 【2015-04-01 14:53:43 by beyond】






【自编号:214】【MJRefresh的github】【点击下载】 【2015-04-01 17:31:26 by beyond】






【自编号:216】【scrollView滚动方向】
向上拉时,contentOffset.y为正
向下拉时。contentOffset.y为负
滚动推断用到的变量:
typedef void (^ScrollBlock)(void);
// 向上滚动时的block
@property (nonatomic,strong) ScrollBlock scrollUpBlock;
// 向下滚动时的block
@property (nonatomic,strong) ScrollBlock scrollDownBlock;
// 滚动推断
CGFloat startY;
BOOL isNowUp;
BOOL isDown;
BOOL isUserDrag;
#pragma mark - 滚动,新增,显示,隐藏
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
// 開始时,标记置真
isUserDrag = YES;
// 记录一下開始滚动的offsetY
startY = scrollView.contentOffset.y;
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
// 结束时,置flag还原
isUserDrag = NO;
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
// 仅仅实用户drag时,才进行响应
if(isUserDrag){
// 实时
// 推断一下,并发出通知
CGFloat newY = scrollView.contentOffset.y;
if(startY - newY >0){
// 说明向上滚动
if(!isNowUp){
//通过block告诉外部控制器
if(_scrollUpBlock){
_scrollUpBlock();
}
isNowUp = YES;
isDown = NO;
}
}else if(startY - newY<0){
// 说明向下滚动
if(!isDown){
//通过block告诉外部控制器
if(_scrollDownBlock){
_scrollDownBlock();
}
isDown = YES;
isNowUp = NO;
}
}
startY = scrollView.contentOffset.y;
} }
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ if (_scrollDownBlock && self.tableView.contentSize.height - (self.tableView.contentOffset.y+self.tableView.bounds.size.height) < 1) {
_scrollDownBlock();
return;
}
if(_scrollUpBlock){
_scrollUpBlock();
isNowUp = YES;
isDown = NO;
return;
} }

【2015-04-02 11:41:05 by beyond】






【自编号:217】【定义枚举】
// 定义一个枚举
typedef enum {
// 返回button
FootViewBtnTypeBack,
// 我的
FootViewBtnTypeMine,
// 写评论
FootViewBtnTypeWriteComment,
// 查看评论
FootViewBtnTypeReadComment,
// 关注、取消关注
FootViewBtnTypeAttention,
// 很多其它button
FootViewBtnTypeMore } FootViewBtnType;

【2015-04-02 14:57:34 by beyond】






【自编号:218】【变量名和类型同样时的异常错误】
FilterCtrl *FilterCtrl = [[FilterCtrl alloc]init];
这样命名变量,会报错,提示:没有声明alloc方法。 。 。 。

【2015-04-02 15:04:13 by beyond】






【自编号:222】【IOS7新特性之XCODE】【进入网址】 【2015-04-03 10:55:31 by beyond】






【自编号:223】【第3方集成支付】【进入网址】 【2015-04-03 10:56:07 by beyond】






【自编号:224】【popping动画演示】【进入网址】 【2015-04-03 10:56:28 by beyond】






【自编号:226】【实时获得webView的contentSize】
 iOS 怎样计算UIWebView的ContentSize
分类: iPhone常见问题 2014-02-27 17:33 1754人阅读 评论(0) 收藏 举报
首选要等UIWebView载入内容后,然后在它的回调方法里将webview的高度Height设置足够小,就设置为1吧。由于这样才干用
sizeThatFits才干计算出webview得内容大小
- (void)webViewDidFinishLoad:(UIWebView *)aWebView {
CGRect frame = aWebView.frame;
frame.size.height = 1;
aWebView.frame = frame;
CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
aWebView.frame = frame; NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);
} UIWebView计算高度 (2013-10-09 14:48:39)转载▼
标签: uiwebview 高度 计算 sizethatfits 分类: ios
第一种:
- (void)webViewDidFinishLoad:(UIWebView *)webView{
float height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] floatValue];
//document.body.scrollHeight
} 第二种: - (void) webViewDidFinishLoad:(UIWebView *)webView
{
CGRect frame = webView.frame;
CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
webView.frame = frame;
} 第二种
- (void)viewDidLoad {
[super viewDidLoad];
webview.delegate = self;
[webview loadHTMLString:@"
fdasfda
" baseURL:nil];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *output = [webview stringByEvaluatingJavaScriptFromString:@"document.getElementByIdx_x_x_x("foo").offsetHeight;"];
NSLog(@"height: %@", output);
}

【2015-04-03 15:46:30 by beyond】






【自编号:227】【ios_数组中放枚举】
NSInteger   _btnTagArr[4] = {ContactSelectBtnChatting,ContactSelectBtnTel,isTeacher?

ContactSelectBtnLeave:ContactSelectBtnDetail};

【2015-04-03 17:01:13 by beyond】






【自编号:246】【this class is not key value coding-compliant for the key HeightConstraint】
问题:
this class is not key value coding-compliant for the key HeightConstraint
原因:
在IB上拖线时的时候。有多的 ,删除掉就可以
解答:

【2015-04-07 11:14:44 by beyond】






【自编号:247】【dispatch_after延时改变约束】
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 当事件触发时,改变其constant值,然后调用约束所在的对象的 layoutIfNeeded方法,固定的~ 比如:
_topView.collectionViewHeightConstraint.constant = 50;
// self.leftMarginConstraint.constant = 100;
// self.widthConstraint.constant = 200;
[UIView animateWithDuration:2.0 animations:^{
[self.view layoutIfNeeded];
[_topView layoutIfNeeded];
}];
});

【2015-04-07 11:23:03 by beyond】






【自编号:253】【ios_VLC】【查看原文】 【2015-04-08 17:04:16 by beyond】






【自编号:254】【ios_VLC】
VLC for iOS 2.3.0   

关于VLC配置问题,依据个人经验整理了一下,希望能帮到须要的朋友。

官网链接:https://wiki.videolan.org/IOSCompile/

百度云盘链接:http://pan.baidu.com/s/1bnEOXPH password:ur4l

配置说明(百度云盘)

官网依照说明操作就能够了仅仅是下载的地址是个谷歌的什么站点,所以你懂得。

百度云盘下载下来后须要配置下文件VLC/ios/External 这个目录以下有六个文件(快捷方式):MediaLibraryKit,MobileVLCKit,PLCrashReporter,QuincyKit,gtl,upnpx
又一次配置下这六个文件路径就能够用了,vlc源代码是区分真机和模拟器的 终端配置路径
1、在终端进入External目录
2、ln -s -f是终端改动文件路径的,关于终端命令不懂的朋友请百度,在此就不班门弄斧了。
真机就用Release-iphoneos,模拟器就用Release-iphonesimulator ln -s -f /Users/stlink/Desktop/VLC/ios/ImportedSources/MediaLibraryKit/build/Release-iphoneos MediaLibraryKit ln -s -f /Users/stlink/Desktop/VLC/ios/ImportedSources/VLCKit/build/Release-iphoneos MobileVLCKit ln -s -f /Users/stlink/Desktop/VLC/ios/ImportedSources/PLCrashReporter/build/Release-iphoneos PLCrashReporter ln -s -f /Users/stlink/Desktop/VLC/ios/ImportedSources/QuincyKit/client/iOS/QuincyLib/build/Release-iphoneos QuincyKit ln -s -f /Users/stlink/Desktop/VLC/ios/ImportedSources/GDrive/build/Release-iphoneos gtl ln -s -f /Users/stlink/Desktop/VLC/ios/ImportedSources/upnpx/projects/xcode4/upnpx/build/Release-iphoneos upnpx 3、路径正确的话就没问题了,ls -l 查看文件路径 改动完毕后就能够启动了VLC/iOS/VLC for iOS.xcodeproj 注意:我有时候配置正确路径可是文件还是报错,这样的情况的话解压又一次搞吧,临时不知道怎么处理。 SimplePlayback
这个是VLC在线播放的一个demo,路径:VLC/ios/ImportedSources/VLCKit/Examples_iOS/SimplePlayback 项目直接拷贝出来不能用的,要配置下。
libMobileVLCKit.a 这个demo用到这个静态库。 静态库区分真机和模拟器的。 静态库我不太懂怎么配置,搞了几次没搞定 只是有另外的办法MobileVLCKit.framework这个不区分真机和模拟器的。
路径:VLC/ios/ImportedSources/VLCKit/build 注意:Deployment target 要低于7.0 END 最后希望能帮到须要的朋友,不懂得能够联系我,qq:527993842,加好友请说明谢谢,因为工作原因可能无法及时回复请见谅,并且我也是刚接触vlc。 关键词:iOS VLC MediaLibraryKit项目中的Search paths使用相对路径就能够了。 Header Search Paths --> ../../External/MobileVLCKit/include
Library Search Paths --> ../../External/MobileVLCKit MediaLibraryKit项目中相对路径$(SRCROOT)得到的值是/XXX/XXX/VLC/ios/ImportedSources/MediaLibraryKit,而不是想象中的/XXX/XXX/VLC/ios/ 多谢LZ的奉献~~~

【查看原文】 【2015-04-08 17:05:30 by beyond】






【自编号:255】【导航返回button】
UIButton* btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, image.size.width+10, 40)];
btn.showsTouchWhenHighlighted = YES;
[btn setImage:image forState:UIControlStateNormal];
[btn addTarget:theTarget action:sel forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backBtn = [[UIBarButtonItem alloc] initWithCustomView:btn];
backBtn.tag = 9528; vc.navigationItem.leftBarButtonItem = backBtn;

【2015-04-08 17:29:42 by beyond】






【自编号:256】【iphone真机死活不旋转】
死活不走代理方法:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait
|| interfaceOrientation == UIInterfaceOrientationLandscapeLeft
|| interfaceOrientation == UIInterfaceOrientationLandscapeRight);
} 原因可能是:手机上拉高速设置栏中:竖排方向锁定 :打开了

【2015-04-09 11:13:39 by beyond】






【自编号:257】【模拟器上面 播放视频崩溃】
iphone 4s  8.0系统的模拟器上面 播放视频:
崩溃:
Apr 9 11:44:39 [jun] rtcreporting[57158] : logging starts...
Apr 9 11:44:39 [jun] rtcreporting[57158] : setMessageLoggingBlock: called
原因:
在模拟器上面播放视频
解决的方法:
去掉全局断点,这是一个bug

【2015-04-09 11:52:57 by beyond】






【自编号:258】【应该竖屏,仅在视频播放页面横屏】
在app delegate中。启动时,
[userDefault setBool:NO forKey:@"userDefault_isAllowLandscape"];
[userDefault synchronize];
在app delegate中,通过一个本地保存的key进行推断。是否进行横屏
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
// 全局的设置:同意竖屏+横屏
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
BOOL isAllowLandscape = [userDefault boolForKey:@"userDefault_isAllowLandscape"];
if (isAllowLandscape) {
return UIInterfaceOrientationMaskPortrait|UIInterfaceOrientationMaskLandscape;
} else {
return UIInterfaceOrientationMaskPortrait;
} }
在视频播放控制器中。更改本地保存的key就可以

【2015-04-09 14:40:52 by beyond】






【自编号:261】【ios_xib_preview预览】
右上方----show the assistant edit ---- 选择新窗体中manual最下方的Preview

【2015-04-10 09:51:28 by beyond】






【自编号:267】【inDatabase: was called reentrantly on the same queue, which would lead to a deadlock】
在使用时,假设在queue里面的block运行过程中,又调用了 indatabase方法,则会检查 是不是同一个queue,假设是同一个queue会死锁;原因非常easy:
队列里面 放了一个block,该block又在 本队列 后面放了一个 block;
从而:前一个block 里面 调用了 后一个block,必须等后一个block运行完毕了。
前一个block才会 出队列;
而后一个block想要运行,则又必须先等 前一个block出队列。
因此 死锁。! 。! 解决方法:在indatabase的block中,不要再调用indatabase方法
[[[DBHelper shareInstance] dbQueue]inDatabase:^(FMDatabase *db){ isSuccess = [self.helper update4Table:TB_User_Friend withArgs:args where:where]; }];
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- (void)inDatabase:(void (^)(FMDatabase *db))block {
/* Get the currently executing queue (which should probably be nil, but in theory could be another DB queue
* and then check it against self to make sure we're not about to deadlock. */
FMDatabaseQueue *currentSyncQueue = (__bridge id)dispatch_get_specific(kDispatchQueueSpecificKey);
assert(currentSyncQueue != self && "inDatabase: was called reentrantly on the same queue, which would lead to a deadlock");
}

【2015-04-16 10:49:41 by beyond】






【自编号:270】【自己主动布局scrollView】
contentSize 必须明白指定。如label距离下方多少。距离右边多少,这样才干够 让scrollView计算出contentSize

【查看原文】 【2015-04-16 15:50:52 by beyond】






【自编号:271】【先对数组统一排序,再进行分组,再组内排序】
// 其它情况,返回是数组
NSMutableArray *contentDictArr = (NSMutableArray *)content;
DLog(@"返回是数组,长度是 %d",contentDictArr.count);
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// NSArray 转成 NSMutableArray
// 0、对于不启用的,即enabled为0的字典模型,删除掉
NSMutableArray *dictArr = [NSMutableArray array];
for (NSInteger i = 0; i < contentDictArr.count; i++) {
NSDictionary *dict = contentDictArr[i];
if ([[dict objectForKey:@"FEnabled"]intValue] == 1) {
[dictArr addObject:dict];
}
}
// DLog(@"清除未启用的字典后的数组:%@",dictArr);
// 0.1、对于被包括的模块。临时剔除
NSMutableArray *tempdictArr = [NSMutableArray array];
for (NSInteger i = 0; i < dictArr.count; i++) {
NSDictionary *dict = dictArr[i];
// 假设有值,则说明是某个模块的子模块@"26e86235-e04c-46e1-a7d5-6d513c02de39"
// 假设没有值,即NSNull,表示是根文件夹模块,直接展示
if ([[dict objectForKey:@"FUpCMID"] class] == [NSNull class]) {
[tempdictArr addObject:dict];
}
} // 1、对数组按GroupTag排序
NSArray *sortDesc = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"FGroupTag" ascending:YES]];
NSArray *sortedArr = [tempdictArr sortedArrayUsingDescriptors:sortDesc];
// DLog(@"排序后的数组:%@",sortedArr); // 2、对数组进行分组,按GroupTag
// 遍历,创建组数组,组数组中的每个元素是一个模型数组
NSMutableArray *testGroupArr = [NSMutableArray array];
NSMutableArray *currentArr = [NSMutableArray array];
// 由于肯定有一个字典返回,先加入一个
[currentArr addObject:sortedArr[0]];
[testGroupArr addObject:currentArr];
// 假设不止一个,才要动画加入
if(sortedArr.count > 1){
for (NSInteger i = 1; i < sortedArr.count; i++) {
// 先取出组数组中 上一个模型数组的第一个字典模型的groupID
NSMutableArray *preModelArr = [testGroupArr objectAtIndex:testGroupArr.count-1];
NSInteger preGroupID = [[[preModelArr objectAtIndex:0] objectForKey:@"FGroupTag"] intValue];
// 取出当前字典,依据groupID比較,假设同样则加入到同一个模型数组;假设不同样,说明不是同一个组的
NSDictionary *currentDict = sortedArr[i];
NSInteger groupID = [[currentDict objectForKey:@"FGroupTag"] intValue];
if (groupID == preGroupID) {
[currentArr addObject:currentDict];
}else{
// 假设不同样,说明 有新的一组,那么创建一个模型数组,并加入到组数组testGroupArr
currentArr = [NSMutableArray array];
[currentArr addObject:currentDict];
[testGroupArr addObject:currentArr];
}
}
}
// 3、遍历 对每一组 进行排序
NSMutableArray *tempGroupArr = [NSMutableArray array];
for (NSArray *arr in testGroupArr) {
// NSArray *sortDesc = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"FOrder" ascending:YES]];
NSArray *tempArr = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
if([[obj1 objectForKey:@"FOrder"]intValue] < [[obj2 objectForKey:@"FOrder"]intValue]){
return NSOrderedAscending;
}
if([[obj1 objectForKey:@"FOrder"]intValue] > [[obj2 objectForKey:@"FOrder"]intValue]){
return NSOrderedDescending;
}
return NSOrderedSame;
}];
[tempGroupArr addObject:tempArr];
}
testGroupArr = tempGroupArr;
DLog(@"封装好的group数组:%@",testGroupArr);
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// testGroupArr 将封装好的字典数组缓存起来,以便下次调用 userDefault_localGroupArr
// 依据用户上次选择的,展示
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
[userDefault setBool:YES forKey:@"userDefault_hasCached_moduleDictArr"];
NSString *jsonStr = testGroupArr.JSONString;
DLog(@"没有网络的时候用:jsonStr:%@",jsonStr);
[userDefault setObject:jsonStr forKey:@"testGroupArr_jsonStr"];
[userDefault sync

【2015-04-17 11:39:14 by beyond】






【自编号:272】【awakeFromNib】
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
} - (void)awakeFromNib{
[super awakeFromNib];
NSLog(@"call %s", __FUNCTION__);
self.backgroundColor = [UIColor redColor];
// 其它初始化方法
}

【2015-04-17 13:44:36 by beyond】






【自编号:273】【iOS开发的一些奇巧淫技】【查看原文】 【2015-04-17 13:45:06 by beyond】






【自编号:274】【nsrange,是 一个结构体,方法: NSMakeRange(<#NSUInteger loc#>, <#NSUInteger len#>)】【2015-04-17 15:36:04 by beyond】






【自编号:279】【textView占位】
Easy way, just create placeholder text in UITextView by using the following UITextViewDelegate methods:

- (void)textViewDidBeginEditing:(UITextView *)textView
{
if ([textView.text isEqualToString:@"placeholder text here..."]) {
textView.text = @"";
textView.textColor = [UIColor blackColor]; //optional
}
[textView becomeFirstResponder];
} - (void)textViewDidEndEditing:(UITextView *)textView
{
if ([textView.text isEqualToString:@""]) {
textView.text = @"placeholder text here...";
textView.textColor = [UIColor lightGrayColor]; //optional
}
[textView resignFirstResponder];
}
just remember to set myUITextView with the exact text on creation e.g. UITextView *myUITextView = [[UITextView alloc] init];
myUITextView.delegate = self;
myUITextView.text = @"placeholder text here...";
myUITextView.textColor = [UIColor lightGrayColor]; //optional
and make the parent class a UITextViewDelegate before including these methods e.g. @interface MyClass ()
@end

【进入网址】 【2015-04-20 10:30:15 by beyond】






【自编号:281】【btn得到cell得到table得到row】
while (![btn isMemberOfClass:[self class]]){
btn = (UIButton *)[btn superview];
}
MyProjectCell *cell = (MyProjectCell *)btn;
UITableView *tableView = (UITableView *)cell;
while (![tableView isMemberOfClass:[UITableView class]]){
tableView = (UITableView *)[tableView superview];
}
NSIndexPath *path = [tableView indexPathForCell:cell];
row = path.row;
// 已经弃用,调用外界的控制器的block,并将cell的行号传递过去
// _wannaChangeStatusBlock(row); // 调用外界的控制器的block,并将cell的行号传递过去
_wannaChangeStatusBlockExt(row,cell);

【2015-04-21 15:31:01 by beyond】






【自编号:282】【auto adjust cell】
viewdidload
tableView.rowHeight = UITableViewAutomaticDimension;
tableView.estimatedRowHeight = 10;
cellForRow
[cell layoutIfNeeded];

【2015-04-21 15:37:29 by beyond】






【自编号:283】【iOS开发的一些奇巧淫技】【进入网址】 【2015-04-22 16:46:25 by beyond】






【自编号:284】【url schemes】
project--->targets--->info--->urlTypes
identifier: com.sg31.www
url schemes: beyond
以下的为接收到外部调用的时候程序启动,响应方法,在safari输入:beyond://com.sg31.www
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { if ([[url scheme] isEqualToString:@"beyond"]) {
NSLog(@"外部调用成功");
}
return YES;
}

【2015-04-23 09:58:25 by beyond】






【自编号:285】【动画特效1】
CAKeyframeAnimation * animation;
animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
animation.duration = 0.5;
animation.delegate = self;
animation.removedOnCompletion = YES;
animation.fillMode = kCAFillModeForwards; NSMutableArray *values = [NSMutableArray array];
[values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)]];
[values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.2, 1.2, 1.0)]];
[values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.9, 0.9, 0.9)]];
[values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 1.0)]]; animation.values = values;
[_contentView.layer addAnimation:animation forKey:nil];

【2015-04-23 17:22:19 by beyond】


iOS_开发中遇到的那些问题_1的更多相关文章

  1. iOS_开发中引导页的设置及代码

    在iOS 手机App 软件的开发中, 基本上每一个完整的App 都有与之相对应的引导页的设置,引导页也会有很多种设置的方式,根据不同的情况,选择不同的编码,在这里,我分享一下自己关于引导页的一些看法和 ...

  2. 【Cocos2d-x游戏开发】细数Cocos2d-x开发中那些常用的C++11知识

    自从Cocos2d-x3.0开始,Cocos2dx就正式的使用了C++11标准.C++11简洁方便的特性使程序的可拓展性和可维护性大大提高,也提高了代码的书写速度. 下面我们就来一起学习一下Cocos ...

  3. iOS开发中遇到的一些问题及解决方案【转载】

    iOS开发中遇到的一些问题及解决方案[转载] 2015-12-29 [385][scrollView不接受点击事件,是因为事件传递失败] // //  MyScrollView.m //  Creat ...

  4. TDD在Unity3D游戏项目开发中的实践

    0x00 前言 关于TDD测试驱动开发的文章已经有很多了,但是在游戏开发尤其是使用Unity3D开发游戏时,却听不到特别多关于TDD的声音.那么本文就来简单聊一聊TDD如何在U3D项目中使用以及如何使 ...

  5. React在开发中的常用结构以及功能详解

    一.React什么算法,什么虚拟DOM,什么核心内容网上一大堆,请自行google. 但是能把算法说清楚,虚拟DOM说清楚的聊聊无几.对开发又没卵用,还不如来点干货看看咋用. 二.结构如下: impo ...

  6. Android学习探索之Java 8 在Android 开发中的应用

    前言: Java 8推出已经将近2年多了,引入很多革命性变化,加入了函数式编程的特征,使基于行为的编程成为可能,同时减化了各种设计模式的实现方式,是Java有史以来最重要的更新.但是Android上, ...

  7. Java开发中的23种设计模式详解

    [放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...

  8. 总结iOS开发中的断点续传那些事儿

    前言 断点续传概述 断点续传就是从文件赏赐中断的地方重新开始下载或者上传数据,而不是从头文件开始.当下载大文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会从头下载,这样很 ...

  9. 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

    提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...

随机推荐

  1. TP-LINK路由器桥接功能实现(WDS)

    弄过好几次路由器的桥接了,但每次都忘记了,要重新找资料.在此记录一下,方便以后使用. 准备工作: 1.设置本地连接/无线网络连接(取决于用哪个配置路由器):IP-192.168.1.100 掩码-25 ...

  2. HDU_1856_带权并查集

    有10000000个同学,他们之间可能是直接朋友或者间接朋友,问最大的朋友圈有多少人. 一直觉得10000000的数组开不了,用map优化了一下,结果能开,且10000000也不会超时... #inc ...

  3. linux查看内核版本和发行版本号

    1.查看Linux内核版本号:1.1 uname -r #查看当前linux系统的内核版本号显示举例:2.6.21-1.3194.fc71.2 uname -a #可以查看包括内核版本号.机器硬件信息 ...

  4. 火狐加载用户配置文件 "C:\XXX\Mozilla Firefox\firefox.exe" http://192.168.1.1:8080 -profile ../kkk

    "C:\XXX\Mozilla Firefox\firefox.exe" http://192.168.1.1:8080 -profile ../kkk $("#clic ...

  5. JavaScript中的跨域问题

    跨域问题其实很普遍的存在的,如何解决跨域问题呢,跨域问题到底是怎么产生的,解决方法的由来又是什么?我觉得看了视频讲解,值得写下来,记录下来. 一.跨域问题是怎么产生? 概念:只要协议.域名.端口有任何 ...

  6. IDEA打war包部署本地TOMCAT测试

    在Eclipse中打war包很方便,导出即可直接选择war包,如下图所示: 但是在IDEA中有点麻烦,网上很多教程,做的也都很好,我自己也做一份,加深一下印象. 首先打开File->Projec ...

  7. PHP 数组使用之道

    本文首发于 PHP 数组使用之道,转载请注明出处. 这个教程我将通过一些实用的实例和最佳实践的方式列举出 PHP 中常用的数组函数.每个 PHP 工程师都应该掌握它们的使用方法,以及如何通过组合使用来 ...

  8. sql server 备份计划

    SSMS 1.管理 2.维护计划 3.维护计划向导 或者 1. server 代理 2. 作业 3. 新建作业 备份计划时间尽量选在闲时, 例如午夜

  9. oracle 11g完全卸载

    oracle 11g release2的完全卸载方式与前些版本有了改变,自带了一个卸载批处理文件——deinstall.bat.(这个工具可以从oracle的home进行完全的卸载,不管是单实例ora ...

  10. 多光源 MultipleLight

    使用2个Pass增加光照效果: 第一个Pass是基础光源,一般是第一个平行光:Tags{"LightMode" = "ForwardBase"} 第二个光源是增 ...