杂七杂八的小细节设置

关于日期
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中的坐标是基于这样的坐标系统:以左上角为坐标的原点,原点向下和向右为坐标轴正向。这个坐标系统同时也用于UIWindowUIView类。视图坐标系统的方向和QuartzMac OS X使用的缺省方向不同。
如果您需要周期性地更新视图内容,就必须确定什么时候调用setNeedsDisplaysetNeedsDisplayInRect:方法来触发更新。举例来说,如果您需要每秒数次地更新内容,则可能要使用一个定时器。在响应用户交互或生成新的视图内容时,也可能需要更新视图。
如果您需要改变缺省的坐标系统,可以通过修改当前的转换矩阵来实现。当前转换矩阵(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 datetimeIntervalSince1970];//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 sharedApplicationopenURL:[NSURL URLWithString:url]];


——09-22——
1、设置button的title在button上显示的位置
  self.pulldownButton.titleLabel.frame = CGRectMake(10, 0, 50, 20);
                ——不可行
    [self.pulldownButton setTitleEdgeInsets:UIEdgeInsetsMake(05020)];
                ———可行

 也可以通过继承uibutton类,重写方法
   – (CGRect)titleRectForContentRect:(CGRect)contentRect
   {
        return CGRectMake(014715025);
   }
  也可以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 allocinit];
        }
        [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这个名字了
      }
  }
}

发表评论