自定义 UIAlertView iOS8 xCode6

Custom UIAlertView iOS8 xCode6

大家好,我正在尝试使用简单的 class UIView 创建自定义的 AlertView。

使用以下代码在实现所需文件中调用我的警报

UTAlertView * alert = [[UTAlertView alloc] initWithTitle: @ "Hello how are you" message: @ "test message"];

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

如你所见,select all'alert 的颜色类型,使用

alert.types = UTAlertViewType

我以为我做的一切都是正确的,但我看不到不同的颜色"Types" 分配警报的 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的背景是透明的

当你这样做alert.types = UTAlertViewTypeError;时,它与[alert setTypes: UTAlertViewTypeError]相同。

如果你想让它改变背景,你需要在-(void)setTypes:(UTAlertViewType)t {方法而不是-(UTAlertViewType)types {方法中编写代码。