如何检测应用更新?

你可以使用友盟等第三方工具,但如果你只想使用轻量级的方法,只需GET这个接口: http://itunes.apple.com/lookup?id= 你的应用程序的ID ,解析返回的json字符串就行。

我想完全复制一个 UIView 怎么办,copy 方法好像用不了

iOS 中并不是所有对象都支持copy,只有遵守NSCopying协议的类才可以发送copy消息,当用你试图使用类似于 UIView *v = [_v1 copy] 方式复制一个UIView时,会抛出一个名为 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView copyWithZone:]: unrecognized selector sent to instance 0x7ff163d12060' 的异常。这时候我们可以采取使用对象序列化方式复制对象:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:_v1];
UIView *v = [NSKeyedUnarchiver unarchiveObjectWithData:data];

一般我们用来指定 tableviewcell 的高度时使用 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 方法返回一个固定的高度。但这个方法会被 n 多次调用,其实你只要这么指定下高度就可以 self.tableView.rowHeight = 100

我只是想修改导航栏返回按钮的文字,其他啥都不想干

你可以尝试在 viewWillDisappear 方法里这么干:

项目中静态库有真机和模拟器两个版本,可不可以合并为一个

在 Xcode 中创建一个静态库文件,编译后会生成两个版本,一个是模拟器版本,一个是真机版本。所以导致后续引入静态库非常不方便,因此很有必要把这两个库打包成一个。合并以后的静态库文件大小是未合并的两个静态库之和。方法如下:

lipo -create "path/to/模拟器专用lib.a" "path/to/真机专用lib.a" -output "path/to/通用lib.a"
1
2
3
4 #!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"


1.TableView不显示没内容的Cell怎么办?

类似于图1,我不想让下面的那些空显示。很简单,添加“self.tableView.tableFooterView = [[UIView alloc] init];”试过都说好,加完这句之后就变成了图2的样子。

2.自定义了leftBarbuttonItem左滑返回手势失效了怎么办?

self.navigationItem.leftBarButtonItem=[[UIBarButtonItemalloc]

initWithImage:img

style:UIBarButtonItemStylePlain

target:self

action:@selector(onBack:)];

self.navigationController.interactivePopGestureRecognizer.delegate=(id<UIGestureRecognizerDelegate>)self;

3.ScrollView莫名其妙不能在viewController划到顶怎么办?

self.automaticallyAdjustsScrollViewInsets=NO;

4. 键盘事件写得好烦躁,都想摔键盘了怎么办?

●买个结实的键盘;

●使用IQKeyboardManager(GitHub上可搜索),用完之后腰也不疼了,腿也不酸了。

5.为什么我的App老是不流畅,到底哪里出了问题?

这个神器叫做:KMCGeigerCounter,快去GitHub上搬运吧。

6.怎么在不新建一个Cell的情况下调整separaLine的位置?

_myTableView.separatorInset=UIEdgeInsetsMake(0,100,0,0);

7.怎么点击self.view就让键盘收起,需要添加一个tapGestures么?

-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event

[self.viewendEditing:YES];

8. 怎么给每个ViewController设定默认的背景图片?

使用基类啊,少年。

9.想在代码里改在xib里添加的layoutAttributes,但该怎么用代码找?

像拉Button一样地拉你的约束,nslayoutattribute也是可以拉线的。

10.怎么像Safari一样滑动的时候隐藏navigationbar?

navigationController.hidesBarsOnSwipe=Yes

11. 导航条返回键带的title太讨厌了,怎么让它消失?

[[UIBarButtonItemappearance]setBackButtonTitlePositionAdjustment:UIOffsetMake(0,-60)

forBarMetrics:UIBarMetricsDefault];

12. CoreData用起来好烦,语法又臭又长怎么办?

MagicRecord

13. CollectionView怎么实现tableview那种悬停的essay-header?

CSStickyHeaderFlowLayout

14.能不能只用一个pan手势来代替UISwipegesture的各个方向?

-(void)pan:(UIPanGestureRecognizer*)sender

typedefNS_ENUM(NSUInteger,UIPanGestureRecognizerDirection){

UIPanGestureRecognizerDirectionUndefined,

UIPanGestureRecognizerDirectionUp,

UIPanGestureRecognizerDirectionDown,

UIPanGestureRecognizerDirectionLeft,

UIPanGestureRecognizerDirectionRight

staticUIPanGestureRecognizerDirectiondirection=UIPanGestureRecognizerDirectionUndefined;

switch(sender.state){

caseUIGestureRecognizerStateBegan:{

if(direction==UIPanGestureRecognizerDirectionUndefined){

CGPointvelocity=[sendervelocityInView:recognizer.view];

BOOLisVerticalGesture=fabs(velocity.y)>fabs(velocity.x);

if(isVerticalGesture){

if(velocity.y>0){

direction=UIPanGestureRecognizerDirectionDown;

}else{

direction=UIPanGestureRecognizerDirectionUp;

else{

if(velocity.x>0){

direction=UIPanGestureRecognizerDirectionRight;

}else{

direction=UIPanGestureRecognizerDirectionLeft;

break;

caseUIGestureRecognizerStateChanged:{

switch(direction){

caseUIPanGestureRecognizerDirectionUp:{

[selfhandleUpwardsGesture:sender];

break;

caseUIPanGestureRecognizerDirectionDown:{

[selfhandleDownwardsGesture:sender];

break;

caseUIPanGestureRecognizerDirectionLeft:{

[selfhandleLeftGesture:sender];

break;

caseUIPanGestureRecognizerDirectionRight:{

[selfhandleRightGesture:sender];

break;

default:{

break;

break;

caseUIGestureRecognizerStateEnded:{

direction=UIPanGestureRecognizerDirectionUndefined;

break;

default:

break;

15. 拉伸图片的时候怎么才能让图片不变形?

UIImage*image=[[UIImageimageNamed:@"xxx"]stretchableImageWithLeftCapWidth:10topCapHeight:10

注: 有开发者提醒这个已经弃用,现在的方法叫resizableImageWithCapInsets。

方法二,如图:

16.怎么播放GIF的时候这么卡,有没有好点的库?

FlipBoard出品的FLAnimatedImage太适合你了。

17.怎么一句话添加上拉刷新?

使用SVPullToRefresh库:

[tableViewaddPullToRefreshWithActionHandler:^{

//prependdatatodataSource,insertcellsattopoftableview

//call[tableView.pullToRefreshViewstopAnimating]whendone

}position:SVPullToRefreshPositionBottom];

18. 怎么把tableview里Cell的小对勾颜色改成别的颜色?

19. 本来我的statusbar是lightcontent的,结果用UIImagePickerController会导致我的statusbar的样式变成黑色,怎么办?

-(void)navigationController:(UINavigationController*)navigationControllerwillShowViewController:(UIViewController*)viewControlleranimated:(BOOL)animated

[[UIApplicationsharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];

20. 怎么把我的navigationbar弄成透明的而不是带模糊的效果?

[self.navigationBarsetBackgroundImage:[UIImagenew]

forBarMetrics:UIBarMetricsDefault];

self.navigationBar.shadowImage=[UIImagenew];

self.navigationBar.translucent=YES;

21. 怎么改变uitextfield placeholder的颜色和位置?

继承uitextfield,重写这个方法:

-(void)drawPlaceholderInRect:(CGRect)rect{

[[UIColorblueColor]setFill];

[self.placeholderdrawInRect:rectwithFont:self.fontlineBreakMode:UILineBreakModeTailTruncationalignment:self.textAlignment];

1、更加强大的Log输出

#define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), PRETTY_FUNCTION , LINE , ## VA_ARGS );

NSInteger numberA = 100;DLog(@"numberA is %ld",numberA);NSArray *arrayA = @[@"A",@"B",@"C"];DLog(@"arrayA is %@",arrayA);

效果图
打印的内容包括所在的类,所在的方法,所在行数。

2、布局时候使用 CGRectInset ,设置左右、上下边距

UIView *blackView = [[UIView alloc] initWithFrame:CGRectInset(self.view.bounds, 10,30)];blackView.backgroundColor = [UIColor blackColor];[self.view addSubview:blackView];

3、CFAbsoluteTimeGetCurrent()计算时间差

NSTimeInterval startTime = CFAbsoluteTimeGetCurrent();NSURL *url = [NSURLURLWithString:@" http://m.weather.com.cn/atad/101280601.html "];NSData *data = [NSDatadataWithContentsOfURL:url];DLog(@"data is %@",data);NSTimeInterval endTime = CFAbsoluteTimeGetCurrent();DLog(@"time gap is %f",endTime - startTime);