私はこの問題が発生した理由が別の質問にこれらの答えで覆われていると思う:
https://stackoverflow.com/a/3476424/1210490
https://stackoverflow.com/a/6528603/1210490
UIBarButtonItemsは、あなたがプログラム的にそれらを添付する場所に応じて異なる動作をします。それらをツールバーに添付すると、白い「エンボス」アイコンになります。ナビゲーションバーにそれらを添付すると、それらは表示されません。
UIImagesにツールバーのUIBarButtonItemスタイリングを適用する関数を書いて、ここ数時間を費やしました。 それはMonoTouchでのためにC#で書かれていますが、私はあなたがいないproblemoのObj-Cにそれを微調整することができるでしょうと確信している...だから
UIImage ApplyToolbarButtonStyling(UIImage oldImage)
{
float shadowOffset = 1f;
float shadowOpacity = .54f;
RectangleF imageRect = new RectangleF(PointF.Empty, oldImage.Size);
RectangleF shadowRect = new RectangleF(new PointF(0, shadowOffset), oldImage.Size);
RectangleF newRect = RectangleF.Union(imageRect, shadowRect);
UIGraphics.BeginImageContextWithOptions(newRect.Size, false, oldImage.CurrentScale);
CGContext ctxt = UIGraphics.GetCurrentContext();
ctxt.ScaleCTM(1f, -1f);
ctxt.TranslateCTM(0, -newRect.Size.Height);
ctxt.SaveState();
ctxt.ClipToMask(shadowRect, oldImage.CGImage);
ctxt.SetFillColor(UIColor.FromWhiteAlpha(0f, shadowOpacity).CGColor);
ctxt.FillRect(shadowRect);
ctxt.RestoreState();
ctxt.ClipToMask(imageRect, oldImage.CGImage);
ctxt.SetFillColor(UIColor.FromWhiteAlpha(1f, 1f).CGColor);
ctxt.FillRect(imageRect);
UIImage newImage = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
return newImage;
}
、このように見えるために使用UIBarButtonItem:
UIBarButtonItem barButtonItem = new UIBarButtonItem(ApplyToolbarButtonStyling(UIImage.FromFile("MusicIcon.png")), UIBarButtonItemStyle.Plain, delegate {});
は今、次のようになります:このような上記の機能を代わりに作成した
![Before](https://i.stack.imgur.com/AUPfh.png)
、
![After](https://i.stack.imgur.com/dnOOh.png)
が、これは将来的に誰かに役立ちます願っています。
お読みいただきありがとうございます。実際には、これはAppleが矛盾した問題を抱えているように思えます。既定のアプリをいくつか確認したところ、ナビゲーションバーのアイコンの中にはエンボス加工されたものがあります(連絡先のプラスアイコンやメッセージの書き込みボタンなど)。 – Chris
私のおかげで、この精巧な努力のために多くのおかげで。悲しいことに、私はこれを現在のバージョンの製品に組み込む時間がありませんが、次のリリースを試みます。再度、感謝します。 – Chris