problem in changing size of uialertview

流过昼夜 提交于 2019-11-27 21:34:07

To achieve what you want, in your code, after:

[find show];

add:

find.frame = CGRectMake(0,0,300,200);

It's not pretty though, I suggest you use ActionSheets.

Pankaj Kainthla
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Confirmation" message:@" Submit the answer " delegate:self cancelButtonTitle:@"NO" otherButtonTitles:@"YES", nil];
[alert show];
[alert release];

UILabel *theTitle = [alert valueForKey:@"_titleLabel"];
[theTitle setTextColor:[UIColor blackColor]];

UILabel *theBody = [alert valueForKey:@"_bodyTextLabel"];
[theBody setTextColor:[UIColor blackColor]];

UIImage *theImage = [UIImage imageNamed:@"blue-white-abstract-background.jpg"];    
theImage = [theImage stretchableImageWithLeftCapWidth:10 topCapHeight:10];
CGSize theSize = [alert frame].size;

UIGraphicsBeginImageContext(theSize);    
[theImage drawInRect:CGRectMake(0, 0, theSize.width, theSize.height)];    
theImage = UIGraphicsGetImageFromCurrentImageContext();    
UIGraphicsEndImageContext();

//[[alert layer] setContents:[theImage CGImage]];
[[alert layer] setContents:[UIColor clearColor]];

This code does a lot of things to alertview and modify it to increase the size of the alert view.

This does the job pretty well, and does not look weird when the alert appear (ahmet emrah solution has a pretty bad side effect).

CGAffineTransform myTransform = CGAffineTransformMakeScale(1.0, 0.5f);
[alert setTransform:myTransform];

You can subclass the UIAlertView. I have done something like this, change it for your need.

Header file,

#import <Foundation/Foundation.h>

/* An alert view with a textfield to input text.  */
@interface AlertPrompt : UIAlertView    
{
    UITextField *textField;
}

@property (nonatomic, retain) UITextField *textField;
@property (readonly) NSString *enteredText;

- (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle okButtonTitle:(NSString *)okButtonTitle;

@end

Source code,

#import "AlertPrompt.h"


@implementation AlertPrompt

static const float kTextFieldHeight     = 25.0;
static const float kTextFieldWidth      = 100.0;

@synthesize textField;
@synthesize enteredText;

- (void) drawRect:(CGRect)rect {
    [super drawRect:rect];

    CGRect labelFrame;
    NSArray *views = [self subviews];
    for (UIView *view in views){
        if ([view isKindOfClass:[UILabel class]]) {
            labelFrame = view.frame;
        } else {    
            view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y + kTextFieldHeight , view.frame.size.width, view.frame.size.height);
        }

    }

    CGRect myFrame = self.frame;
    self.textField.frame = CGRectMake(95, labelFrame.origin.y+labelFrame.size.height + 5.0, kTextFieldWidth, kTextFieldHeight);
    self.frame = CGRectMake(myFrame.origin.x, myFrame.origin.y, myFrame.size.width, myFrame.size.height + kTextFieldHeight);

}

- (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle okButtonTitle:(NSString *)okayButtonTitle
{

    if (self = [super initWithTitle:title message:message delegate:delegate cancelButtonTitle:cancelButtonTitle otherButtonTitles:okayButtonTitle, nil])
    {
        // add the text field here, so that customizable from outside. But set the frame in drawRect. 
        self.textField = [[UITextField alloc] init];
        [self.textField setBackgroundColor:[UIColor whiteColor]]; 
        [self addSubview: self.textField];

       // CGAffineTransform translate = CGAffineTransformMakeTranslation(0.0, 20.0); 
      //  [self setTransform:translate];
    }
    return self;
}
- (void)show
{
    [textField becomeFirstResponder];
    [super show];
}
- (NSString *)enteredText
{
    return textField.text;
}
- (void)dealloc
{
    [textField release];
    [super dealloc];
}
@end
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!