关于日期
1、判断字符串是否符合定义的日期格式
|
1
2
3
4
5
6
7
|
NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd"]; NSDate *date = [formatter dateFromString:dateText]; if (!date) { [self showInfoAlert:nil message:@"请填入正确的日期格式n例如2012-01-01"]; return; } |
2、当前日期
|
1
2
3
4
|
NSDate *currentDate = [NSDate date]; NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd"]; NSString *currStr = [formatter stringFromDate:currentDate]; |
——————2012-05-23————–
错误:_WebTryThreadLock error
Can’t do graphical (UIKit) changes in a secondary thread.
|
1
2
3
4
5
6
7
8
9
10
|
if([NSThread isMainThread]) { [self performSelector:@selector(viewChange:) withObject:color]; } else { [self performSelectorOnMainThread:@selector(viewChange:) withObject:color waitUntilDone:YES]; } |
——————-2012-05-18————–
MAC下SVN客户端Versi*****破解版
http://www.fly3q.com/2010/10/mac-used-to-send-the-next-best-cracked-version-of-versi*****-svn-client.html
——————-2012-03-26————–
1、关于MPMusicPlayerController的通知MPMusicPlayerControllerNowPlayingItemDidChangeNotification不被调用的问题,
原因:1、musicPlayer没有被创建;2、musicplayer没有调用方法beginGeneratingPlaybackNotificati*****。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(musicPlayerNowPlayingItemDidChangeNotification:)
name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification
object:_musicPlayer];
[_musicPlayer beginGeneratingPlaybackNotificati*****];
2、定义label中字体滚动时,总是会全屏滚动,不管其superview的范围是多少,原因如图:
label的属性Clip Subviews
——————-2012-03-14————–
充分理解plist文件是xml文件的意义。
自定义类型默认是不支持序列化和反序列化,需要实现NSCoding协议,这样才可以将自定义的类写入plist文件中。
常见的NSString, NSNumber, NSDate, NSArray, NSDictionary类型已经实现了NSCoding,所以才可以写入plist文件。
参考:http://geeklu.com/2012/01/ios-persistence
——————-12 – 05——————
关于坐标系统
UIKit中的坐标是基于这样的坐标系统:以左上角为坐标的原点,原点向下和向右为坐标轴正向。这个坐标系统同时也用于UIWindow和UIView类。视图坐标系统的方向和Quartz及Mac OS X使用的缺省方向不同。
如果您需要周期性地更新视图内容,就必须确定什么时候调用setNeedsDisplay或setNeedsDisplayInRect:方法来触发更新。举例来说,如果您需要每秒数次地更新内容,则可能要使用一个定时器。在响应用户交互或生成新的视图内容时,也可能需要更新视图。
如果您需要改变缺省的坐标系统,可以通过修改当前的转换矩阵来实现。当前转换矩阵(CTM)是一个数学矩阵,用于将视图坐标系统上的点映射到设备的屏幕上。在视图的drawRect:方法首次被调用时,就需要建立CTM,使坐标系统的原点和视图的原点互相匹配,且将坐标轴的正向分别处理为向下和向右。然而,您可以通过加入缩放、旋转、和转换因子来改变CTM,从而改变缺省坐标系统相对于潜在视图或窗口的尺寸、方向、和位置。
总的来说,重写绘制UIView,UIView显示在屏幕上的效果相当于将定义的数学坐标系统翻转过来看。(可以在一张白纸上画好你想要在屏幕上显示的效果,然后把这张纸翻到背面,在背面定义数学坐标系统,找出效果图坐标,然后按照顺时针/逆时针描画就可以了。)
——————-12 – 01——————
plist中设置界面
1、横向显示:Initial interface orientation Landscape();
2、状态栏隐藏:Status bar is initially hidden YES
3、ios5 Xcode4.2中release显示编译错误/警告的解决方法:http://mmz06.blog.163.com/blog/static/12141696201110531822530/
4、tint,即着色,用于给控件改变不同的颜色,区别与backgroudcolor
————-11-23———–
0.scrollview显示第一页,每页大小为 1024*768
scrollView.pagingEnabled = YES;
[scrollView scrollRectToVisible:CGRectMake(0, 0, 1024, 768) animated:YES];
1.更新tableview后显示第一行
-(void)scrollToTop
{
[tableView reloaddata];
NSIndexPath *index = [NSIndexPath indexPathForRow:0 inSection:0];
[tableView scrollToRowAtIndexPath:index atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
2.如果两次点击的时间间隔小于1秒,则断定为双击事件
NSTimeInterval tapTime = 0.0;//NSTimeInterval返回值以秒为单位
-(IBAction)countTime:(id)sender
{
NSTimeInterval curr = [[NSDate date] timeIntervalSince1970];//从1970年开始到现在的秒数
if (curr – tapTime < 1)
{
NSLog(@”%s,%@”,__FUNCTION__,@”doubleTap”);
}
tapTime = curr;
}
——09-26——
跳转到appstore
NSString *url = [NSString stringWithString: @”http://itunes.apple.com/cn/app/id444705017?mt=8″];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
——09-22——
1、设置button的title在button上显示的位置
self.pulldownButton.titleLabel.frame = CGRectMake(10, 0, 50, 20);
——不可行
[self.pulldownButton setTitleEdgeInsets:UIEdgeInsetsMake(0, 5, 0, 20)];
———可行
也可以通过继承uibutton类,重写方法
– (CGRect)titleRectForContentRect:(CGRect)contentRect
{
return CGRectMake(0, 147, 150, 25);
}
也可以http://www.cocoachina.com/bbs/read.php?tid=81552
2.Button上文字的对齐方式
self.myButton.titleLabel.textAlignment = UITextAlignmentLeft;
———-这样没有起到什么作用,因为@property(nonatomic,readonly,retain) UILabel*titleLabel
下面方法可行:
[self.myButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
——-09-16—–
设置第十行cell(有button的)不能编辑
-(void)setLastCellCantNotEdit
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:10 inSection:0];
UITableViewCell *cell = [self.myTableView cellForRowAtIndexPath:indexPath];
[cell setEditing:NO animated:NO];
}
——————-该方法不稳定,应重写协议中的方法,如下:
– (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCellEditingStyle style = UITableViewCellEditingStyleDelete;
NSInteger row = [indexPath row];
if (row == 10)
{
style = UITableViewCellEditingStyleNone;
}
return style;
}
——-09-06—–
1.Label字体颜色的设置
textLabel.highlightedTextColor = [UIColor colorWithRed:110.0/255.0 green:93.0/255.0 blue:112.0/255.0 alpha:1.0];
选中之后的高亮颜色,颜色的设定要使用“色值/255.0”,只给出色值的话不能够设定颜色。
3.TableView随着父视图的改变而自动改变
self.myViewController.listTableView.autoresizingMask = UIViewAutoresizingNone;
经历:想当初,想要实现的效果是listTableView随着iPad的旋转而自动改变方向和大小。但是,由于不知道设置此属性,导致一天时间都在调试那该死的tableview的方向和大小,何其悲哀……
4.release后,系统会将该块内存标记为可用;nil就是起到重置指针的作用
[str release];
str = nil;
这样写是个好习惯。
经历:alloc一个NSMutableArray *array,向其中添加数据,再将该array添加到字典中,将[array release]释放;接着再重新alloc新的array,添加数据,将array添加到字典,array中的数据会在原来的基础上添加新的数据。但是重置指针array = nil,之后就不会出现这样的情况。
-(void)setPageDataSource:(NSMutableArray*)sourceOfMusic
{
int pageCount = 1;
NSMutableArray *onePage = nil;
for (MusicElement *element insourceOfMusic)
{
if(onePage == nil)
{
onePage = [[NSMutableArray alloc] init];
}
[onePage addObject:element];
countOfMusic++;
if([onePage count] == 5)
{
NSString *keyOfPage = [NSString stringWithFormat:@”%d”,pageCount];
[self.pageDataSourceDict setObject:onePage forKey:keyOfPage];
pageCount = pageCount + 1;
[onePage release];
onePage = nil;//添加了该句之后可以正常使用onePage这个名字了
}
}
}