IOS11 navigation bar Leftbarbuttonitem display Abnormal
Last Update:2017-12-21
Source: Internet
Author: User
<span id="Label3"></p><style><style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 }p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 }span.s1 { font: 12.0px ".PingFang SC" }span.s2 { font: 12.0px "Helvetica Neue" }</style></style><p class="p1"><p class="p1"><span style="font-size: 16px">If you follow the System's own method of writing no problem, The code is as Follows:</span></p></p><p class="p2"><p class="p2"><span style="font-size: 18px"><span style="font-size: 16px">uibarbuttonitem* Leftitem</span> = <span class="s1" style="font-size: 16px">[[uibarbuttonitem alloc<span class="s1">] </span> </span> </span> <span class="s1"><span class="s1">initwithimage</span></span><span style="font-size: 16px"><span class="s1"><span class="s1">: </span></span></span> <span class="s1" style="font-size: 18px"><span class="s1"><span class="s1">[[UIImage imagenamed:@ "default"<span class="s1">]</span> </span></span></span></p></p><p class="p2"><p class="p2"><span class="s1" style="font-size: 18px"><span class="s1"><span class="s1"><span class="s1">Imagewithrenderingmode:uiimagerenderingmodealwaysoriginal<span class="s1">]</span></span></span></span></span></p></p><p class="p2"><p class="p2"><span class="s1" style="font-size: 18px"><span class="s1"><span class="s1"><span class="s1"><span class="s1">Style:UIBarButtonItemStylePlaintarget:self action: @selector<span class="s1">(leftitemaction<span class="s1">)];</span> </span></span></span></span></span></span></p></p><p class="p2"><p class="p2"><span style="font-size: 16px">self.navigationitem.leftbarbuttonitem= Leftitem<span class="s1">;</span></span></p></p><p class="p1"><p class="p1"><span style="font-size: 16px">But the displayed picture is the User's avatar, is a URL link that can be modified at any time, when the system comes with the method can not be satisfied,</span></p></p><p class="p1"><p class="p1"><span style="font-size: 16px">You must use a custom code as Follows:</span></p></p><p class="p1"><p class="p1"><span class="s2" style="font-size: 16px">//_PERSONALBTN is the current controller property value because the user needs to refresh when modifying the image (third-party libraries are required</span> <span class="s2"> <span class="s2">sdwebimage<span style="font-size: 16px">)</span> </span></span></p></p><p class="p2"><p class="p2"><span style="font-size: 16px">_personalbtn= <span class="s1">[uibuttonbuttonwithtype:uibuttontypecustom<span class="s1">];</span> </span></span></p></p><p class="p2"><p class="p2"><span style="font-size: 16px">_personalbtn.frame=cgrectmake<span class="s1">(0<span class="s1">, 0, (+), +<span class="s1"><span class="s1"><span class="s1">);</span> </span> </span> </span> </span></span></p></p><p class="p2"><p class="p2"><span class="s1" style="font-size: 16px">[_PERSONALBTN sd_setimagewithurl:<span class="s1">[nsurl urlwithstring:_model.headurl<span class="s1">]</span> </span></span></p></p><p class="p2"><p class="p2"><span class="s1" style="font-size: 16px"><span class="s1"><span class="s1">Forstate:uicontrolstatenormal placeholderimage:<span class="s1">[uiimageimagenamed:@ "ev_circle_default"<span class="s1">];</span> </span></span></span></span></p></p><p class="p2"><p class="p2"><span style="font-size: 16px">_personalbtn.layer.maskstobounds=yes<span class="s1">;</span></span></p></p><p class="p2"><p class="p2"><span style="font-size: 16px">_PERSONALBTN.LAYER.CORNERRADIUS=40/2<span class="s1">;</span></span></p></p><p class="p2"><p class="p2"><span class="s1" style="font-size: 16px">[_PERSONALBTN addtarget:selfaction: @selector<span class="s1">(leftitemaction<span class="s1">) forcontrolevents: UIControlEventTouchUpInside<span class="s1">];</span> </span> </span></span></p></p><p class="p2"><p class="p2"><span style="font-size: 16px">uibarbuttonitem* Leftitem = <span class="s1">[[uibarbuttonitem alloc<span class="s1">] initwithcustomview:_personalbtn<span class="s1">];</span> </span> </span></span></p></p><p class="p2"><p class="p2"><span style="font-size: 16px">self.navigationitem.leftbarbuttonitem= Leftitem<span class="s1">;</span></span></p></p><p class="p1"><p class="p1"><span style="font-size: 16px">Shown Below:</span></p></p><p class="p1"><p class="p1"><span style="font-size: 16px"></span></p></p><p class="p1"><p class="p1"></p></p><p class="p1"><p class="p1"></p></p><p class="p1"><p class="p1"><span style="font-size: 16px">Now the display is normal, possibly because there is this code _personalbtn.frame=cgrectmake<span class="s1">(0<span class="s1">, 0<span class="s1">, max, +<span class="s1"><span class="s1">);</span> </span> </span> </span> </span></span></p></p><p class="p1"><p class="p1"><span class="s1" style="font-size: 16px"><span class="s1"><span class="s1"><span class="s1"><span class="s1"><span style="font-size: 16px">when you go back to other pages, it will appear as follows</span> :</span></span></span></span></span></p></p><p class="p1"><p class="p1"><span class="s1" style="font-size: 16px"><span class="s1"><span class="s1"><span class="s1"><span class="s1"></span></span></span></span></span></p></p><p class="p1"><p class="p1"><span style="font-size: 16px">Even the title is gone, is not very wonderful, change to Uiimageview is also so.</span></p></p><p class="p1"><p class="p1"><strong><span style="font-size: 16px">Workaround code:</span></strong></p></p><style><style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 }p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545; min-height: 14.0px }span.s1 { font: 12.0px ".PingFang SC" }</style></style><p class="p1"><p class="p1"><span class="Apple-converted-space"><span style="font-size: 16px">UIView *view = <span class="s1">[[UIView alloc<span class="s1">] initwithframe:cgrectmake<span class="s1">(0<span class="s1">, 0<span class="s1">, (+<span class="s1"><span class="s1">))];</span> </span> </span> </span> </span></span></span></span></span></p></p><p class="p1"><p class="p1"><span class="Apple-converted-space" style="font-size: 16px">View.backgroundcolor = <span class="s1">[uicolor clearcolor<span class="s1">];</span> </span></span></p></p><p class="p2"><p class="p2"><span class="Apple-converted-space" style="font-size: 16px"></span></p></p><p class="p1"><p class="p1"><span class="Apple-converted-space" style="font-size: 16px">_PERSONALBTN = <span class="s1">[UIButton buttonwithtype:uibuttontypecustom<span class="s1">];</span> </span></span></p></p><p class="p1"><p class="p1"><span class="Apple-converted-space" style="font-size: 16px">_personalbtn.frame = CGRectMake<span class="s1">(0<span class="s1">, 0<span class="s1">, (+<span class="s1"><span class="s1">);</span> </span> </span> </span> </span></span></p></p><p class="p1"><p class="p1"><span class="Apple-converted-space" style="font-size: 16px"><span class="s1">[_personalbtn sd_setimagewithurl:<span class="s1">[nsurl urlwithstring:_model.headurl<span class="s1">] Forstate: UIControlStateNormal</span> </span> </span></span></p></p><p class="p1"><p class="p1"><span class="Apple-converted-space" style="font-size: 16px"><span class="s1"><span class="s1"><span class="s1">Placeholderimage:<span class="s1">[UIImage imagenamed:@ "ev_circle_default"<span class="s1">];</span> </span></span></span></span></span></p></p><p class="p1"><p class="p1"><span class="Apple-converted-space" style="font-size: 16px">_personalbtn.layer.maskstobounds = YES<span class="s1">;</span></span></p></p><p class="p1"><p class="p1"><span class="Apple-converted-space" style="font-size: 16px">_personalbtn.layer.cornerradius = 40/2<span class="s1">;</span></span></p></p><p class="p1"><p class="p1"><span class="Apple-converted-space" style="font-size: 16px"><span class="s1">[_personalbtn addtarget:self action: @selector<span class="s1">(leftitemaction<span class="s1">) forcontrolevents: UIControlEventTouchUpInside<span class="s1">];</span> </span> </span> </span></span></p></p><p class="p1"><p class="p1"><span class="Apple-converted-space" style="font-size: 16px"><span class="s1">[view addsubview:_personalbtn<span class="s1">];</span> </span></span></p></p><p class="p2"><p class="p2"><span style="font-size: 16px"></span></p></p><p class="p1"><p class="p1"><span class="Apple-converted-space" style="font-size: 16px">Uibarbuttonitem * Leftitem = <span class="s1">[[uibarbuttonitem alloc<span class="s1">] initwithcustomview:view<span class="s1">];</span> </span> </span></span></p></p><p class="p1"><p class="p1"> <span style="font-size: 16px">self.navigationitem.leftbarbuttonitem= Leftitem<span class="s1">;</span></span></p></p><p class="p1"><p class="p1"><span class="s1" style="font-size: 16px">As to why the resolution, I also do not understand, may be the size of the view limit the size of the btn, thank you for browsing, if you find the reason for this, please enlighten</span></p></p><p><p>IOS11 navigation bar Leftbarbuttonitem display Abnormal</p></p></span>