自定义UIAlertView iOS8 xCode6

时间:2015-02-26 14:50:00

标签: xcode uiview ios8 uialertview

大家好我正在尝试使用简单的类UIView创建我的AlertView。

使用以下代码

在Implementation所需文件中调用我的警报
UTAlertView * alert = [[UTAlertView alloc] initWithTitle: @ "Hello how are you" message: @ "test message"];

     alert.types = UTAlertViewTypeError;
     [alert presentAlert];
     [self.view addSubview: alert];

如您所见,要选择all'alert的颜色类型,请使用

alert.types = UTAlertViewType

我以为我做的一切都是正确的,但我看不出不同的颜色“类型”分配警报的UIView ......

你能告诉我我做错了什么吗?

这是.h文件

#import <UIKit/UIKit.h>
#import "UIColor+UTAlertView_Color.h"


typedef NS_ENUM (NSInteger, UTAlertViewType) {

UTAlertViewTypeSuccess,
UTAlertViewTypeError,
UTAlertViewTypeWarning };


@interface UTAlertView : UIView

-(id)initWithTitle:(NSString*)title message:(NSString *)message;
-(void)presentAlert;


@property(nonatomic, assign) UTAlertViewType types;


@end

这是file.m

@interface UTAlertView ()
@property (nonatomic, strong)UILabel *titleLabel;
@property (nonatomic, strong)UILabel *messageLabel;
@property (nonatomic, strong)UIImageView *alertIcon;
@property (nonatomic, strong)UIView *alertView;



@end

@implementation UTAlertView
@synthesize alertIcon;
@synthesize titleLabel, messageLabel;
@synthesize alertView;
@synthesize types;


-(id)initWithTitle:(NSString*)title message:(NSString *)message  {

    alertView                         = [self initWithFrame:CGRectMake(kPositionX, 0, kSizeW, 55)];

    titleLabel                        = [[UILabel alloc] init];
    titleLabel.textColor              = [UIColor titleColor:1];
    titleLabel.font                   = [UIFont systemFontOfSize:14];
    titleLabel.text                   = title;
    titleLabel.frame                  = CGRectMake(2, 3, 50, 10);
    [self addSubview:titleLabel];

    messageLabel.textColor            = [UIColor messageColor:1];
    messageLabel.font                 = [UIFont systemFontOfSize:14];
    messageLabel.text                 =  message;



    return self;
}


-(UTAlertViewType)types {

switch (types) {
    case UTAlertViewTypeSuccess:
    alertView.backgroundColor    = [UIColor successColor:1];
        break;
        case UTAlertViewTypeError:
        alertView.backgroundColor    = [UIColor errorColor:1];
        break;
        case UTAlertViewTypeWarning:
        alertView.backgroundColor    = [UIColor warningColor:1];
        break;

    default:
        break;
}


return types;

}  我正在使用正确的Type枚举?我做错了什么? ..非常感谢你的帮助

UiView的背景是透明的

1 个答案:

答案 0 :(得分:1)

执行此操作alert.types = UTAlertViewTypeError;时,它与[alert setTypes: UTAlertViewTypeError]相同。

如果您想让它更改背景,您需要使用-(void)setTypes:(UTAlertViewType)t {方法而不是-(UTAlertViewType)types {方法编写代码。