手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表全部文章

supportedInterfaceOrientations

在OC下写这个真方便。。

 

- (NSInteger) supportedInterfaceOrientations{
     return (UIInterfaceOrientationsMaskPortrait | UIInterfaceOrientationsMaskLandscapeLeft);
}
 
在swift下就。。苦逼了
override func supportedInterfaceOrientations -> Int{
     //错误写法 return (UIInterfaceOrientationsMask.Portrait | UIInterfaceOrientationsMask.LandscapeLeft);
     //上面会报错。。说是UIInterfaceOrientationsMask不能转成Bool
     //google了一下,原来,,,应该这样写
     return UIInterfaceOrientationMask.Portrait.rawValue.hashValue | UIInterfaceOrientationMask.PortraitUpsideDown.rawValue.hashValue;
}
天啊要写这么上。开始网上是写UIInterfaceOrientationMask.Portrait.toRaw().hashValue,但好象toRaw的方法新版没有了。
所以只能用rawValue来转换。
好辛苦啊。swift改了N次了

UIActionSheetView和UIAlertView

 笔记

这两个View都有一个参数 :otherButtonTitles,在OC中的时候,如果这个参数 不设置就是otherButtonTitles:nil,
如果有多个参数 ,就是otherButtonTitles: @"first" , @"second" , nil
就因为这个nil,害得我在swift里走了弯路
 
在写swift的时候,我也是otherButtonTitles:nil的时候直接就报错了,说是不能转成String,再看了一下方法,果然人家写的就是otherButtonTitles:String?
那怎么办?想了一阵,那我不写这个参数行不行?最后果然OK。那么,如果是多个button咋整?
放弃nil吧?otherButtonTitles:"abc","def","ghi"
果然编译通过。。。原代码中的nil真是吓坏我了
 
我在看精通IOS开发第6版。初学。100页还没看完。不过我是全部用swift写的,好累啊@
 

Tags: swift

IOS开发笔记(swift)二

1、 如何获取字符串的长度:

在判断长度是否大于0的时候,if [xxx length ] > 0 就行了。而如果直接用swift,就不能写 if xxx.length > 0 了。因为xxx没有length这个方法。
有两个办法:
  1. if countElements(xxx) > 0 
  2. if xxx.utf16count > 0 
2、swift的delegate不象oc那样一个个的标注,只要在class头上写明就OK了
比如 class ViewController : UIViewController , UIActionSheetDelegate {

}
就能直接用UIActionSheetDelegate中的方法了。然后他们的delegate写self即可

刚开始学。不知道对错,目前就这样先纯做笔记,当然 你也可以delegate: nil 这样代表你这个控件 就不再接受委托了

Tags: swift

IOS开发笔记(swift)

 笔记,从OC翻译成swift。遇到点问题

NSDictionary 和 nameRange 上有点小问题

NSString *plainText = [NSString stringWithFormat:@"%@ test" , @"click"];

NSMutableAttributedString *styleText = [[NSMutableAttributedString alloc] initWithString:plainText]

NSDictionary *attr = @{NSFontAttributeName: [UIFont boldSystemFontOfSize : statusLabel.font.pointSize ]};

NSRange nameRange = [plainText rangeOfString: title ]

[styleText setAttributes:attr range:nameRange ]

statusLabel.attributeText = styleText;

这是OC的代码,转成swift的时候有点问题,第1是NSDictionary不知道怎么写了。。。array好象无法一下子转成NSDictionary,第2就是在用rangeOfString的时候,plainText。因为是NSString,因此可以直接使用rangeOfString,但swift定义字符串时,var plainText = "test" + "click" 这是string不是NSString...

所以查了点资料最后改成下面的代码

var plainText = title! + " button pressed";

var styleText = NSMutableAttributedString(string: plainText);

var attributes : NSDictionary = [NSFontAttributeName : UIFont.boldSystemFontOfSize( statusLabel.font.pointSize )]

let nameRange : NSRange  = (plainText as NSString).rangeOfString(title!);

//styleText.setAttributes(attributes, ))

styleText.setAttributes(attributes, range: nameRange);

statusLabel.attributedText = styleText;

 

----

上面的那个plainText as NSString就OK了。不过我需要再尝试一下,我是不是可以直接var plainText:NSString = title! + " button pressed";

[确认OK,如果真的需要用rangeOfString,应该还是在之前先得强类型一下比较好]

-----

今天算是注意了,所以下次应该可以记得,比如Int(xxxx),强制 转换, (sring as NSString) 也可以作一个转换

几个常见的命令:cat,head,tail,vim

常常遇到这样的问题,出门在外,突然收到消息说程序出错了,打开网页一看,居然是xxxx.php 第 n行处理xxx有错误。这时候,如果有电脑,还好办一点。如果没有怎么办?

手机上我装 了issh ,远程上线后直接看一下好象也是个办法,这时候,上面的几个命令就有用了。cat / head /tail / vim

cat -n xxxx.php ,先大概的瞄一下。

如果是前10行,默认head就可以看了,如果超出一点,比如前20行,head -n 20 xxx.php

如果是尾部,tail -n 20 xxxx.php (tail 命令更适合用来查看log文件,如tail -f xxx.log,你就可以盯着屏幕了)

看起来这样都能看到问题,可如果不知道文件行数怎么办?

cat xxx.php |wc -l,先看一下行数

如果想直接改掉,就vim xxx.php,然后 :30 ,直接跳至30行,直接xxxx就改了

嗯,如果是自己的项目这样可以,如果不行,还是安稳点,不过这些小技巧还是可以记一下的