当前位置:  编程技术>移动开发
本页文章导读:
    ▪让Category支持添加属性与成员变量      Category是Objective-C中常用的语法特性,通过它可以很方便的为已有的类来添加函数。但是Category不允许为已有的类添加新的属性或者成员变量。     一种常见的办法是通过runtime.h中objc.........
    ▪unity3d 中加入admob      网上有很多在unity3d 中加入admob方法这里只是记录一些要点给自己做个备忘,必竞广告搞好一次就不用再管了,下一个新项目时容易忘记! 主要方法来自http://www.cnblogs.com/zhiweifire/archive/2011/10/18.........
    ▪iphone下scrollview图片浏览器小记      今天看书中介绍了从图片库中调用图片的例子,一时性起打算做一个简单的图片浏览器。功能很简单,从图片库中载入图片,然后放到view下,并支持放大,缩小,平移。 由于对控件库不.........

[1]让Category支持添加属性与成员变量
    来源:    发布时间: 2013-11-15

Category是Objective-C中常用的语法特性,通过它可以很方便的为已有的类来添加函数。但是Category不允许为已有的类添加新的属性或者成员变量。    
一种常见的办法是通过runtime.h中objc_getAssociatedObject / objc_setAssociatedObject来访问和生成关联对象。通过这种方法来模拟生成属性。

//NSObject+IndieBandName.h
@interface NSObject (IndieBandName)
@property (nonatomic, strong) NSString *indieBandName;
@end

上面是头文件声明,下面的实现的.m文件:

// NSObject+IndieBandName.m
#import "NSObject+Extension.h"
#import <objc/runtime.h>
static const void *IndieBandNameKey = &IndieBandNameKey;
@implementation NSObject (IndieBandName)
@dynamic indieBandName;

- (NSString *)indieBandName {
return objc_getAssociatedObject(self, IndieBandNameKey);
}

- (void)setIndieBandName:(NSString *)indieBandName{
objc_setAssociatedObject(self, IndieBandNameKey, indieBandName, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

@end

 DLIntrospection

这个和Category无关,但是也是runtime.h的一种应用。DLIntrospection,是 一个NSObject Category。它为NSObject提供了一系列扩展函数:  

@interface NSObject (DLIntrospection)

+ (NSArray *)classes;
+ (NSArray *)properties;
+ (NSArray *)instanceVariables;
+ (NSArray *)classMethods;
+ (NSArray *)instanceMethods;

+ (NSArray *)protocols;
+ (NSDictionary *)descriptionForProtocol:(Protocol *)proto;


+ (NSString *)parentClassHierarchy;
@end

通过这些函数,你可以在调试时(通过po命令)或者运行时获得对象的各种信息。

 

 

 

本文链接


    
[2]unity3d 中加入admob
    来源: 互联网  发布时间: 2013-11-15

网上有很多在unity3d 中加入admob方法这里只是记录一些要点给自己做个备忘,必竞广告搞好一次就不用再管了,下一个新项目时容易忘记!

主要方法来自http://www.cnblogs.com/zhiweifire/archive/2011/10/18/2216892.html 这篇博客,这里感谢一下博言的分享

几个要点

1、包名必需一致 package name 

2、在unity 工程目录中的Asset/plugins/android/目录中 AndroidManifest.xml,res,libs,bin 这几个是需的,其它可以不要,看着整奇一些

3、用eclipse 导出jar时,可以只打包src这个目录。生成的jar 放在unity 工程目录中的Asset/plugins/android/bin 目录中 

4、在unity 工程目录中的Asset/plugins/android/libs 中放入admob的jar包,其它广告平台也是一样的!


说得不是很清楚明白,不清楚的地方可以参考上面那篇博文!

作者:HPsoft 发表于2013-1-5 11:53:56 原文链接
阅读:5 评论:0 查看评论

    
[3]iphone下scrollview图片浏览器小记
    来源:    发布时间: 2013-11-15

今天看书中介绍了从图片库中调用图片的例子,一时性起打算做一个简单的图片浏览器。

功能很简单,从图片库中载入图片,然后放到view下,并支持放大,缩小,平移。

 

由于对控件库不了解,一开始的方案是这样的:

前面的框架都一样:

用toolbar做按钮条,里面有个按键,触发从按键。

按键action调用图片库,之后图片库发消息到delegate(我这里协议挂在了主UIViewController上面,后面其他的delegate也一样)。

如果正确得到了图片 UIImagePickerControllerDelegate的imagePickerController:didFinishPickingMediaWithInfo:的第二个参数可以得到一个包含选定图片的Dictionary。

 

OK,演出开始了。后面的方案是这样。

1.  搞了个UIImageView作为图片载体,扑满整个屏幕,然后将Mode设置为Center,图片设置后可以居中显示。

     然后利用UIPinchGestureRecognizer做手势,手势触发后会回调响应方法。在方法中设置UIImageView的bounds和center保证其居中显示。过程中从网络上搜索了一个扩展UIImage的类型,可以进行缩放图片。源码:(注意,这个函数由于用到了UIGraphicsXXXX函数,要求只能再主线程中调用)

    

//
//  UIImage_Extra.h
//  Camera
//
//  Created by 李 择一 on 11-4-22.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>


@interface UIImage (Extra)

- (UIImage*) imageByScalingAndCroppingForSize: (CGSize)targetSize;

@end

//
//  UIImage_Extra.m
//  Camera
//
//  Created by 李 择一 on 11-4-22.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "UIImage_Extra.h"


@implementation UIImage (Extra)

- (UIImage*)imageByScalingAndCroppingForSize: (CGSize)targetSize
{
    UIImage *sourceImage = self;
    UIImage *newImage = nil;        
    CGSize imageSize = sourceImage.size;
    CGFloat width = imageSize.width;
    CGFloat height = imageSize.height;
    CGFloat targetWidth = targetSize.width;
    CGFloat targetHeight = targetSize.height;
    CGFloat scaleFactor = 0.0;
    CGFloat scaledWidth = targetWidth;
    CGFloat scaledHeight = targetHeight;
    CGPoint thumbnailPoint = CGPointMake(0.0,0.0);
    
    if (CGSizeEqualToSize(imageSize, targetSize) == NO) 
    {
        CGFloat widthFactor = targetWidth / width;
        CGFloat heightFactor = targetHeight / height;
        
        if (widthFactor > heightFactor) 
            scaleFactor = widthFactor; // scale to fit height
        else
            scaleFactor = heightFactor; // scale to fit width
        scaledWidth  = width * scaleFactor;
        scaledHeight = height * scaleFactor;
        
        // center the image
        if (widthFactor > heightFactor)
        {
            thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5; 
        }
    
    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3