gpt4 book ai didi

ios - iOS 7 中的自定义 UIView 方向问题

转载 作者:可可西里 更新时间:2023-11-01 05:43:17 26 4
gpt4 key购买 nike

我在 iPad 应用程序中自定义 UIView 显示(如警告消息)的方式在 iOS 8 及更高版本中工作正常,但 iOS 7 View 仅在纵向模式下显示?

我的 iPad 应用程序部署目标是 iOS 7,设备方向仅为横向左和横向右。

iOS 7 屏幕:

enter image description here

iOS 8 屏幕:

enter image description here

我的代码在这里ViewController.m

- (IBAction)submitBtnActiion:(id)sender
{
if (self.emailField.text.length == 0 || self.phoneNoField.text.length == 0 || self.passField.text.length == 0) {

QAlertView *alert = [[QAlertView alloc]
initWithAlertTitle:@"Message"
withMessage:@"Please ensure that all required fields are completed"
withContent:nil
withCancelButton:@"OK"
withOtherButton:nil];

alert.delegate = self;

[alert showInWindow];

return;
}
}

QAlertView.h

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

@protocol QAlertDelegate <NSObject>

- (void)QAlertView:(QAlertView *)alertView
clickedAtButtonIndex:(NSInteger)index;

@end

@protocol QAlertDelegate;

@interface QAlertView : UIView

@property(nonatomic) BOOL isAdjustKeyboardOnResign;

@property(nonatomic) CGFloat adjustedValue;

@property(nonatomic) NSString *message;

@property(nonatomic, assign) id<QAlertDelegate> delegate;

- (id)initWithAlertTitle:(NSString *)title
withMessage:(NSString *)message
withContent:(UIView *)contentView
withCancelButton:(NSString *)button
withOtherButton:(NSString *)otherButton;
- (void)showInWindow;

@end

QAlertView.m

#import "QHeaders.h"

@implementation QAlertView
{
UIView *messageView;
}
@synthesize isAdjustKeyboardOnResign;

@synthesize adjustedValue;

- (CGRect)getBounds {

[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
CGRect screenBounds = [UIScreen mainScreen].bounds;

NSString *ver = [[UIDevice currentDevice] systemVersion];

float ver_float = [ver floatValue];

if (ver_float >= 8.0) {
return screenBounds;
}

CGFloat width = CGRectGetWidth(screenBounds);

CGFloat height = CGRectGetHeight(screenBounds);

UIInterfaceOrientation interfaceOrientation =
[UIApplication sharedApplication].statusBarOrientation;

if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) {
screenBounds.size = CGSizeMake(width, height);
} else if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) {
screenBounds.size = CGSizeMake(height, width);
}
return screenBounds;
}

- (id)initWithAlertTitle:(NSString *)title
withMessage:(NSString *)message
withContent:(UIView *)contentView
withCancelButton:(NSString *)button
withOtherButton:(NSString *)otherButton {

_message = message;

bool temp = NO;
bool temp1 = NO;

if (self = [super initWithFrame:[self getBounds]]) {
self.backgroundColor = [UIColor blueColor];
}

UIView *alerView =
[[UIView alloc] initWithFrame:CGRectMake(0, 0, 1024, 1024)];

[alerView setBackgroundColor:[UIColor colorWithRed:(23 / 255.0)
green:(26 / 255.0)
blue:(31 / 255.0)
alpha:0.6]];

[self addSubview:alerView];

CGFloat adjustedHeight = ALERT_HEIGHT;

if (contentView) {
CGFloat actualHeight = contentView.frame.size.height;

adjustedHeight = actualHeight + (2 * BUTTON_HEIGHT);


}

if ([message isEqualToString:@"DisplayTableMapPopup"]) {



messageView = [[UIView alloc]
initWithFrame:CGRectMake(120,155,ALERT_WIDTH, adjustedHeight)];

_message = @"";

message = @"";

temp = YES;



}else if ([message isEqualToString:@"TableSettingPopup"]){

messageView = [[UIView alloc]
initWithFrame:CGRectMake(
((self.frame.size.width - 453) / 2)+30,
((self.frame.size.height - adjustedHeight) / 2)+24,
453, 315)];

_message = @"";

message = @"";

temp1 = YES;


}else{
messageView = [[UIView alloc]
initWithFrame:CGRectMake(
((self.frame.size.width - ALERT_WIDTH) / 2),
([QNotifier sharedInstance].qAlertKeyboardDisplay ==
YES)
? ((self.frame.size.height - adjustedHeight) / 2) -
115
: ((self.frame.size.height - adjustedHeight) / 2),
ALERT_WIDTH, adjustedHeight)];
}
[QNotifier sharedInstance].qAlertKeyboardDisplay = NO;

messageView.backgroundColor = [UIColor colorWithRed:235.0f / 255.0f
green:235.0f / 255.0f
blue:236.0f / 255.0f
alpha:1.0f];

messageView.layer.cornerRadius = 10.0f;

[messageView.layer setMasksToBounds:YES];

[messageView setUserInteractionEnabled:YES];

// INITIATE THE TITLE FOR THE ALERT VIEW

UILabel *titleLabel = [[UILabel alloc]
initWithFrame:CGRectMake(0, 5, ALERT_WIDTH, BUTTON_HEIGHT)];

titleLabel.backgroundColor = [UIColor clearColor];

titleLabel.textAlignment = NSTextAlignmentCenter;

titleLabel.text = title;

titleLabel.font = [UIFont fontWithName:ROBOTO_MEDIUM size:15.0f];

[messageView addSubview:titleLabel];

if (contentView) {
// NEED TO INCUDE THE CONTENT VIEW MIDDLE OF TITLE AND BUTTON.

[messageView addSubview:contentView];
} else {
// NEED TO INCLUDE THE MESSAGE IN THE MIDDLE OF TITLE AND BUTTON

UILabel *contentLabel = [[UILabel alloc]
initWithFrame:CGRectMake(10, BUTTON_HEIGHT - 5, ALERT_WIDTH - 20,
DEFAULT_CONTENT_HEIGHT + 5)];

contentLabel.backgroundColor = [UIColor clearColor];

contentLabel.textAlignment = NSTextAlignmentCenter;

contentLabel.textColor = ALERT_TEXTCOLOR;

contentLabel.numberOfLines = 4;

contentLabel.adjustsFontSizeToFitWidth = YES;

contentLabel.text = message;

contentLabel.font = [UIFont fontWithName:ROBOTO_LIGHT size:14.0f];

[messageView addSubview:contentLabel];
}

// TWO BUTTONS HAS VALUES.

UILabel *dividerLabel = [[UILabel alloc]init];

if (temp) {

dividerLabel.frame=CGRectMake(0,(messageView.frame.size.height - BUTTON_HEIGHT)-3,
ALERT_WIDTH, 1);


}else if(temp1){

dividerLabel.frame=CGRectMake(0,(messageView.frame.size.height - BUTTON_HEIGHT),
453, 1);



}else{

dividerLabel.frame=CGRectMake(0,(messageView.frame.size.height - BUTTON_HEIGHT),
ALERT_WIDTH, 1);

}

dividerLabel.backgroundColor = [UIColor colorWithRed:(212 / 255.0)
green:(216 / 255.0)
blue:(217 / 255.0)
alpha:1];

[messageView addSubview:dividerLabel];

NSInteger limit = (otherButton == nil || button == nil) ? 1 : 2;

for (NSInteger i = 0; i < limit; i++) {
if (i) {
UILabel *buttonDividerLabel = [[UILabel alloc]
initWithFrame:CGRectMake(
(i * (ALERT_WIDTH / limit)),
(messageView.frame.size.height - BUTTON_HEIGHT), 1,
BUTTON_HEIGHT)];

buttonDividerLabel.backgroundColor = [UIColor colorWithRed:(212 / 255.0)
green:(216 / 255.0)
blue:(217 / 255.0)
alpha:1];

[messageView addSubview:buttonDividerLabel];
}

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];



[btn setFrame:CGRectMake((i * (ALERT_WIDTH / limit)),
(messageView.frame.size.height - BUTTON_HEIGHT),
ALERT_WIDTH / limit, BUTTON_HEIGHT)];

if (temp1) {

[btn setFrame:CGRectMake((i * (453 / limit)),
(messageView.frame.size.height - BUTTON_HEIGHT),
453 / limit, BUTTON_HEIGHT)];

}

btn.tag = i;

NSString *btnString;

UIColor *textColor;

if (limit > 1) {
btnString = (i) ? otherButton : button;

textColor = (i) ? BUTTON_TEXTCOLOR : [UIColor lightGrayColor];
} else {
if (otherButton) {
btnString = otherButton;
} else {
btnString = button;
}

textColor = BUTTON_TEXTCOLOR;
}

[btn setTitle:btnString forState:UIControlStateNormal];

[btn setExclusiveTouch:YES];

[btn addTarget:self
action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchUpInside];

[btn.titleLabel setFont:[UIFont fontWithName:ROBOTO_MEDIUM size:(temp1)?16:15.0f]];

[btn setTitleColor:textColor forState:UIControlStateNormal];

[messageView addSubview:btn];
}

[self addSubview:messageView];

return self;
}

- (void)showInWindow {
[[[[UIApplication sharedApplication] windows] firstObject] addSubview:self];

[[[[UIApplication sharedApplication] windows] firstObject]
bringSubviewToFront:self];

messageView.transform = CGAffineTransformMakeScale(0.9, 0.9);

[UIView animateWithDuration:0.2
delay:0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
messageView.transform = CGAffineTransformIdentity;

}
completion:^(BOOL finished) {
indicatorView.alpha = 1.0;
}];

[self layoutIfNeeded];
}

- (void)dismiss {

if ([indicatorView superview]) {
[indicatorView removeFromSuperview];

indicatorView = nil;
}

[UIView animateWithDuration:0.2
animations:^{
// parentView.alpha = 0.0;
messageView.alpha = 0.0;
indicatorView.alpha = 0.0;

}
completion:^(BOOL finished) {

[messageView removeFromSuperview];

messageView = nil;

[self removeFromSuperview];
}];
}

- (void)buttonClicked:(UIButton *)btn {

if ([self.delegate
respondsToSelector:@selector(QAlertView:clickedAtButtonIndex:)]) {

[self.delegate QAlertView:self clickedAtButtonIndex:btn.tag];
}

[self dismiss];
}

提前致谢。

最佳答案

在你的方法中 - (CGRect)getBounds

UIInterfaceOrientationIsPortraitUIInterfaceOrientationIsLandscape 方法仅适用于 ios8 及更高版本

Availability

Available in iOS 8.3 and later.

手动检查这些情况

enum UIInterfaceOrientation : Int {
case Unknown
case Portrait
case PortraitUpsideDown
case LandscapeLeft
case LandscapeRight
}

关于ios - iOS 7 中的自定义 UIView 方向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37208546/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com