塑封机不能封口不加热怎么办,...导致页面底部按钮显示不全的完美爱游戏平台的解决方案 -爱游戏平台

苗坤旺离型膜

一种自动包装机的结构如图 1 所示。首先机器中有?n?条轨道,放置了一些物品。轨道下面有一个筐。当某条轨道的按钮被按下时,活塞向左推动,将轨道尽头的一件物品推落筐中。当 0 号按钮被按下时,机械手将抓取筐顶部的一件物品,放到流水线上。图 2 显示了顺序按下按钮 3、2、3、0、1、2、0 后包装机的状态。

图1 自动包装机的结构

图 2 顺序按下按钮 3、2、3、0、1、2、0 后包装机的状态

一种特殊情况是,因为筐的容量是有限的,当筐已经满了,但仍然有某条轨道的按钮被按下时,系统应强制启动 0 号键,先从筐里抓出一件物品,再将对应轨道的物品推落。此外,如果轨道已经空了,再按对应的按钮不会发生任何事;同样的,如果筐是空的,按 0 号按钮也不会发生任何事。

现给定一系列按钮操作,请你依次列出流水线上的物品。

输入格式:

输入第一行给出 3 个正整数?n(≤100)、m(≤1000)和?smax?(≤100),分别为轨道的条数(于是轨道从 1 到?n?编号)、每条轨道初始放置的物品数量、以及筐的最大容量。随后?n?行,每行给出?m?个英文大写字母,表示每条轨道的初始物品摆放。

最后一行给出一系列数字,顺序对应被按下的按钮编号,直到??1?标志输入结束,这个数字不要处理。数字间以空格分隔。题目保证至少会取出一件物品放在流水线上。

输出格式:

在一行中顺序输出流水线上的物品,不得有任何空格。

输入样例:

3 4 4

gplt

pata

omsa

3 2 3 0 1 2 0 2 2 0 -1

输出样例:

mata

#include

#include

int main()

{

int x,y,z,ba=0,num;//ba代表着篮子的起始值。num表示着输入的轨道编号。

int l,side,max;

int i;

scanf("%d %d %d",&l,&side,&max);//输入轨道数,轨道大小,以及篮子大小。

int b[l];

static int chushi[1000];//定义一个起始的值让数组都从零开始。

char a[l][side 1];

char d[max];//定义一个篮子用来放不符合的东西;

getchar();

for(i=0;i

{

gets(a[i]);

b[i]=strlen(a[i]); //为了防止初始值的不一样。

}

while(1)

{

scanf("%d",&num);

if(num==-1)break;

else if(num==0)//当为零的时候 要从篮子里取出一个

{

if(ba!=0)

{

printf("%c",d[ba-1]);

ba--;

}

}

else if(num>=1)

{

num=num-1;//这里是因为数组是从0开始的。

if(b[num]!=0)//这个轨道还有东西。

{

if(ba>=max)//如果篮子超出

{

printf("%c",d[ba-1]);//先拿出来一个

ba--;

d[ba]=a[num][chushi[num]];//再放进去一个。

ba ;

}

else if(ba

{

d[ba]=a[num][chushi[num]];

ba ;

}

chushi[num] ;//然后到下一个货物。

b[num]--;//轨道上物品数减一

}

}

}

return 0;

}

欢迎大家给出新的想法

手机共享了热点,另一部手机通过wifi连接连接上这个热点。手机顶部会出现一个蓝色的工具栏,并显示”个人热点:1个连接“,这个工具栏比正常的工具栏告20个像素。 当打开一个应用,若该页面不显示系统工具栏,看不到这个热点工具栏;若该页面显示了系统工具栏,那么就可以看到这个高度增加了一倍的工具栏,并且页面的所有空间下移20像素,导致在底部的按钮显示不全。想修改这个问题,主要是如何发现蓝条的显示和消失,来决定是否上移底部的按钮20个像素。系统会根据蓝条的显示和消失,重新布局页面,所以不要移动所有所有控件,一般只需要适配底层一到二个控件就可以。 判断应用状态栏是否显示蓝条可以通过三种方法: // 标准系统状态栏高度 #define sys_statusbar_height 20 // 热点栏高度 #define hotspot_statusbar_height 20 (1).被动方式,当蓝条显示或消失,会发送状态栏变更通知(uiapplicationwillchangestatusbarframenotification),通过读取通知中状态栏的高度来判断是否显示了栏条。

- (void)handleuiapplicationwillchangestatusbarframenotification:(nsnotification*)notification

{

[self logviewtreeformainwindow];

if(notification != nil)

{

cgrect newstatusbarframe = [(nsvalue*)[notification.userinfo objectforkey:uiapplicationstatusbarframeuserinfokey] cgrectvalue];

// 根据系统状态栏高判断热点栏的变动

[singleobject sharedinstance].bpersonalhotspotconnected = (cgrectgetheight(newstatusbarframe)==(sys_statusbar_height hotspot_statusbar_height)?yes:no);

}

else

{

[singleobject sharedinstance].bpersonalhotspotconnected = ([uiapplication sharedapplication].statusbarframe.size.height==(sys_statusbar_height hotspot_statusbar_height)?yes:no);

}

float hotspotconnectedoffsety = 0;

if(([singleobject sharedinstance].bpersonalhotspotconnected) && (_listenorderpanel != nil))

{

hotspotconnectedoffsety = -hotspot_statusbar_height;

}

//调整控件的frame

}

(2).主动方式,通过直接读取系统状态栏的高度([uiapplication sharedapplication].statusbarframe.size.height)来判断是否显示了热点蓝条。

- (void)applicationdidbecomeactive:(uiapplication *)application {

bool bpersonalhotspotconnected = ([uiapplication sharedapplication].statusbarframe.size.height==(sys_statusbar_height hotspot_statusbar_height)?yes:no);

[singleobject sharedinstance].bpersonalhotspotconnected = bpersonalhotspotconnected;

if([singleobject sharedinstance].isinyxcenterviewcontroller)

{

[[nsnotificationcenter defaultcenter] postnotificationname:change_status_bar_frame_notification object:nil];

}

}

(3).主动获取,通过检查keywindow的倒数第二个图层的初始y坐标是否为20像素来判断是否显示热点蓝条

(bool)getpersonalhotspotconnected

{

uiview *keywindowview = [[uiapplication sharedapplication] keywindow];

if((keywindowview != nil) && ([keywindowview subviews].count > 1))

{

uiview *uilayoutcontainerview0 = [keywindowview subviews][1];

if(uilayoutcontainerview0.frame.origin.y == hotspot_statusbar_height)

{

[singleobject sharedinstance].bpersonalhotspotconnected = yes;

}

else

{

[singleobject sharedinstance].bpersonalhotspotconnected = no;

}

}

return [singleobject sharedinstance].bpersonalhotspotconnected;

}

既然知道了如何判断是否显示了热点蓝条,剩下的是如何捕获热点蓝条显示和消失的时机,进而进行实时调整底部的控件的偏移就可以了。热点蓝条显示和消失的情景如下: 1.应用在前台切换到后台时会收到状态栏变更通知,蓝色状态栏通知(状态栏高度为正常的20像素),就是应用在后台,你的应用是没有热点蓝条的。 2.应用在后台,操作系统热点蓝条消失,若应用非定位服务的应用可能你收不到状态栏变更通知,定位服务的应用会收到状态栏变更通知。 3.应用在后台,操作系统热点蓝条出现,若应用非定位服务的应用可能你收不到状态栏变更通知,定位服务的应用应该会收到状态栏变更通知。 4.当应用从后台切换到前台时,会收到状态栏改变通知(状态栏高度为40像素)。 5.当操作系统已经显示蓝条,应用开始启动,你收不到状态变更通知。你想正确调整底部控件,只能主动获取状态栏的高度进行是否显示了热点蓝条,进而调整底部控件。 6.启动时没有热点蓝条,当应用在前台,有人接入热点,显示热点蓝条,会收到状态栏变更通知。当应用在前台,显示热点蓝条,后蓝条消失,会收到状态栏变更通知。 5.当操作系统已经显示蓝条,应用开始启动后,有人接入热点,显示热点蓝条,会收到状态栏变更通知。当应用在前台,显示热点蓝条,后蓝条消失,会收到状态栏变更通知。 可以看到应用在前台时,都是能够收到系统的状态栏变更,只需要被动的接收系统的状态栏变更通知,再调整控件就可以了。 当应用在后台,经过多次热点蓝条的消失和显示,你可能漏掉正确的调整空间的时机。 真对这种情况,你只需要在应用进入前台时,通知相关需要调整的页面调整一下底部控件就可以了,如:(2)主动式获取状态栏的处理。 你处理了这两类情况,你就解决了绝大多数情况。但是还有一种异常情况,咱们看一下: 当然当应用启动前手机已经显示了蓝条,有可能(我的出租车司机端必现)出现整个页面下移动40像素。当蓝条消失时,显示顶部控件到手机顶部比期望的高20像素,工具栏显示的状态栏背景为黑色。当显示热点蓝条时,通过view ui hierarchy,观察立体图层发现该种异常情况下,页面的全屏幕布局分了3个阶梯,每一个阶梯相差20像素;当不显示热点蓝条时,通过view ui hierarchy,观察立体图层发现该种异常情况下,页面的全屏幕布局分了2个阶梯,每一个阶梯相差20像素。 当然当应用启动前手机不显示蓝条,进入爱游戏平台首页面显示热点蓝条时,通过view ui hierarchy,观察立体图层发现该种情况下,页面的全屏幕布局分了2个阶梯,每一个阶梯相差20像素;当热点蓝条消失后,通过view ui hierarchy,观察立体图层发现该种异常情况下,页面的全屏幕布局都一个高度。 通过分析上面两种情况的全屏幕图层的frame高度和起始高度数据看到第6层及以后的名称为 uilayoutcontainerview图层显然出现了明显的差异,如: 进入时有蓝条,及蓝条消失第7层的打印数据: ------------[ 6] uilayoutcontainerview, height:548.000000, origin.y:20.000000 ------------[ 6] uilayoutcontainerview, height:548.000000, origin.y:20.000000 进入时没有蓝条,蓝条显示和消失,再显示时的第7层的打印数据: ------------[ 6] uilayoutcontainerview, height:568.000000, origin.y:0.000000 ------------[ 6] uilayoutcontainerview, height:568.000000, origin.y:0.000000 ------------[ 6] uilayoutcontainerview, height:568.000000, origin.y:0.000000 可以看到不同,这就是进入时有蓝条,当进入爱游戏平台首页时顶部控件距离热点蓝条多20像素,当热点蓝条消失时显示的状态栏有20个像素的黑色区域并且爱游戏平台首页的顶部控件到状态栏多20个像素的真正原因。 既然知道了原因,只需要判断出这这种情况,修改大于等于第6层的 uilayoutcontainerview图层frame就可以了,看来还是需要修改系统底层的东西啊!应用的图层都是在第8层uinavigationtransitionview以后的图层,并且名称都不叫uilayoutcontainerview。只要在加载爱游戏平台首页面时判断出这种情况修改好就可以。可以通过遍历keywindow的所有图层,找到异常的图层把他的frame修改成cgrectmake(0, 0, kscreenwidth, kscreenheight)就可以。 具体需要修改的代码,在viewdidload调整就可以,代码如下:

- (void)dumpview:(uiview *)aview atindent:(int)indent into:(nsmutablestring *)outstring

{

for (int i = 0; i < indent; i ) [outstring appendstring:@"--"];

[outstring appendformat:@"[-] %@, height:%f, origin.y:%f\n", indent, [[aview class] description], aview.frame.size.height, aview.frame.origin.y];

if((indent > 5) && (aview != nil) && ([[[aview class] description] isequaltostring:@"uilayoutcontainerview"]))

{

if(aview.frame.origin.y == hotspot_statusbar_height)

{

aview.frame = cgrectmake(0, 0, kscreenwidth, kscreenheight);

}

}

for (uiview *view in [aview subviews])

[self dumpview:view atindent:indent 1 into:outstring];

}

// start the tree recursion at level 0 with the root view

- (nsmutabledictionary *) displayviews: (uiview *) aview

{

nsmutablestring *outstring = [[nsmutablestring alloc] init];

uiview *keywindowview = [[uiapplication sharedapplication] keywindow];

[self dumpview: aview atindent:0 into:outstring];

if(outstring.length != 0)

{

if((keywindowview != nil) && ([keywindowview subviews].count > 1))

{

uiview *uilayoutcontainerview0 = [keywindowview subviews][1];

if(uilayoutcontainerview0.frame.origin.y == hotspot_statusbar_height)

{

[singleobject sharedinstance].bpersonalhotspotconnected = yes;

}

else

{

[singleobject sharedinstance].bpersonalhotspotconnected = no;

}

}

nsstring *personalhotspotconnectedvalue = [singleobject sharedinstance].bpersonalhotspotconnected ? @"1":@"0";

nsmutabledictionary *dic = [nsmutabledictionary dictionarywithobjectsandkeys:outstring, @"outstring", personalhotspotconnectedvalue, @"bpersonalhotspotconnected", nil];

return dic;

}

else

{

return nil;

}

}

// show the tree

- (void)logviewtreeformainwindow

{

nsmutabledictionary *dic = [self displayviews:[[uiapplication sharedapplication] keywindow]];

if((dic.count == 2) && ([dic[@"outstring"] iskindofclass:[nsstring class]]))

{

flddlogdebug(@"the view tree:\n%@", dic[@"outstring"]);

}

}

- (void)viewdidload {

[super viewdidload];

[self logviewtreeformainwindow];

}

进入时有蓝条,及蓝条消失全部数据,第1层的数据都相同就不重复了: [ 0] uiwindow, height:568.000000, origin.y:0.000000 –[ 1] uilayoutcontainerview, height:548.000000, origin.y:20.000000 –[ 1] uilayoutcontainerview, height:568.000000, origin.y:0.000000 ----[ 2] uinavigationtransitionview, height:548.000000, origin.y:0.000000 ----[ 2] uinavigationtransitionview, height:568.000000, origin.y:0.000000 ------[ 3] uiviewcontrollerwrapperview, height:548.000000, origin.y:0.000000 ------[ 3] uiviewcontrollerwrapperview, height:568.000000, origin.y:0.000000 --------[ 4] uiview, height:548.000000, origin.y:0.000000 --------[ 4] uiview, height:568.000000, origin.y:0.000000 ----------[ 5] uiview, height:548.000000, origin.y:0.000000 ----------[ 5] uiview, height:548.000000, origin.y:0.000000 ------------[ 6] uilayoutcontainerview, height:548.000000, origin.y:20.000000 ------------[ 6] uilayoutcontainerview, height:548.000000, origin.y:20.000000 --------------[ 7] uinavigationtransitionview, height:548.000000, origin.y:0.000000 --------------[ 7] uinavigationtransitionview, height:548.000000, origin.y:0.000000 ----------------[ 8] uiviewcontrollerwrapperview, height:548.000000, origin.y:0.000000 ----------------[ 8] uiviewcontrollerwrapperview, height:548.000000, origin.y:0.000000 进入时没有蓝条,蓝条显示和消失的全部数据,第1层的数据都相同就不重复了: [ 0] uiwindow, height:568.000000, origin.y:0.000000 –[ 1] uilayoutcontainerview, height:568.000000, origin.y:0.000000 –[ 1] uilayoutcontainerview, height:548.000000, origin.y:20.000000 –[ 1] uilayoutcontainerview, height:568.000000, origin.y:0.000000 ----[ 2] uinavigationtransitionview, height:568.000000, origin.y:0.000000 ----[ 2] uinavigationtransitionview, height:548.000000, origin.y:0.000000 ----[ 2] uinavigationtransitionview, height:568.000000, origin.y:0.000000 ------[ 3] uiviewcontrollerwrapperview, height:568.000000, origin.y:0.000000 ------[ 3] uiviewcontrollerwrapperview, height:548.000000, origin.y:0.000000 ------[ 3] uiviewcontrollerwrapperview, height:568.000000, origin.y:0.000000 --------[ 4] uiview, height:568.000000, origin.y:0.000000 --------[ 4] uiview, height:548.000000, origin.y:0.000000 --------[ 4] uiview, height:568.000000, origin.y:0.000000 ----------[ 5] uiview, height:568.000000, origin.y:0.000000 ----------[ 5] uiview, height:568.000000, origin.y:0.000000 ----------[ 5] uiview, height:568.000000, origin.y:0.000000 ------------[ 6] uilayoutcontainerview, height:568.000000, origin.y:0.000000 ------------[ 6] uilayoutcontainerview, height:568.000000, origin.y:0.000000 ------------[ 6] uilayoutcontainerview, height:568.000000, origin.y:0.000000 --------------[ 7] uinavigationtransitionview, height:568.000000, origin.y:0.000000 --------------[ 7] uinavigationtransitionview, height:568.000000, origin.y:0.000000 --------------[ 7] uinavigationtransitionview, height:568.000000, origin.y:0.000000 ----------------[ 8] uiviewcontrollerwrapperview, height:568.000000, origin.y:0.000000 ----------------[ 8] uiviewcontrollerwrapperview, height:568.000000, origin.y:0.000000 ----------------[ 8] uiviewcontrollerwrapperview, height:568.000000, origin.y:0.000000 ------------------[ 9] uiview, height:568.000000, origin.y:0.000000 ------------------[ 9] uiview, height:568.000000, origin.y:0.000000 ------------------[ 9] uiview, height:568.000000, origin.y:0.000000 --------------------[10] uiimageview, height:568.000000, origin.y:0.000000 --------------------[10] uiimageview, height:568.000000, origin.y:0.000000 --------------------[10] uiimageview, height:568.000000, origin.y:0.000000 进入时有蓝条的图层层次图(异常场景): 进入时有蓝条,热点共享蓝条消失后的图层层次图(异常场景): 进入时没有有蓝条,热点共享蓝条出现后的图层层次图(正常场景): 进入时没有热点共享蓝条的图层层次图(正常场景): 进入时没有热点蓝条,当热点蓝条消失时,状态栏显示为20个像素的黑色区域,顶部控件到顶部的距离也比预期的高20个像素的截图如下(异常场景): 进入时有热点蓝条,当热点蓝条消失时,修正后的正确截图如下: 进入时有热点蓝条,修正后的正确截图如下: 下面是微信没有完美解决热点共享蓝条下压后导致顶部工具栏异常的图片。可见只是靠接收uiapplicationwillchangestatusbarframenotification通知来处理它引起的状态栏异常是不完美的。我也经过很长时间的修改探索才找到这个完美爱游戏平台的解决方案。对工作执着、对产品负责的态度,极度注重细节,不断追求完美,没有绝对完美的产品,我们都是在追求路上。

注意:ios13.51后,苹果抄袭安卓,把那个多出20像素状态栏修改为显示左上角时间背景颜色,并把时间换成对应图标一小段时间,然后图标消失,仍旧显示时间。所以苹果的热点共享(蓝色),后台定位(蓝色)和后台语音(红色)不会出现状态栏下压20像素导致底部页面20像素显示不出来的问题了。这个小功能变更不知道苹果什么时候修改的,苹果也没有给这方面的说明,我估计可能是ios13时修改的。不过这样我们不用再适配这种页面混乱了。其实原来影响最差的不是普通页面,而是启动页面。若你的启动页面中间有有意义的图像。当热点状态栏出来时,会把中间截取20像素扔掉。

后台定位刚出现时。 热点共享工具栏出现一段时间后。 后台语音刚出现时。

分享
文章爱游戏平台的版权声明:除非注明,否则均为苗坤旺离型膜原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
applausebadlaughcoffeefabulousfacepalmfecesfrownheyhainsidiouskeepfightingnoprobpigheadshockedslapsocialsweattolaughwatermelonwittywowyeahyellowdog
评论列表 (暂无评论,6人围观)

还没有评论,来说两句吧...

微信二维码
微信二维码
支付宝二维码
网站地图