当我发现在iPhone/iPad上为我的UIViews添加阴影是多么容易时,我感到非常兴奋.
只需在Xcode中添加框架,将导入添加到文件顶部:
#import <QuartzCore/QuartzCore.h>
Run Code Online (Sandbox Code Playgroud)
然后呢:
self.contentView.layer.shadowRadius = 3.0;
self.contentView.layer.shadowOffset = CGSizeMake(-2.0, -3.0);
self.contentView.layer.shadowOpacity = 0.5;
self.contentView.layer.shadowColor = [UIColor blackColor].CGColor;
Run Code Online (Sandbox Code Playgroud)
虽然这确实在我的应用程序中创建了一个美丽的阴影,但是当显示视图时它现在也会落后于死...即使在调试器外部启动时也是如此.有没有我忘记的东西,或者这种方法对大型观点不实用?
作为参考,我在这里发布了一个截图.
在网上搜索大约4个小时没有得到答案:
如何在具有透明度的路径上绘制阴影?
- (void)drawRect:(CGRect)rect
{
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(c, 2);
CGContextSetStrokeColorWithColor(c, [[UIColor whiteColor] CGColor]);
CGContextSetShadowWithColor(c, CGSizeMake(0, 5), 5.0, [[UIColor blackColor]CGColor]);
CGContextSetFillColorWithColor(c, [[UIColor colorWithWhite:1.0 alpha:0.8] CGColor]);
// Sample Path
CGContextMoveToPoint(c, 20.0, 10.0);
CGContextAddLineToPoint(c, 100.0, 40.0);
CGContextAddLineToPoint(c, 40.0, 70.0);
CGContextClosePath(c);
CGContextDrawPath(c, kCGPathFillStroke);
}
Run Code Online (Sandbox Code Playgroud)
我注意到的第一件事,阴影只在中风附近.但到目前为止,这不是问题.路径/ rect后面的阴影仍然可见,这意味着:阴影颜色会影响路径的填充颜色.填充颜色应为白色,而不是灰色.如何解决这个问题?
我是WPF技术的新手.我在WPF中有以下窗口声明:
<Window x:Class="CustomWindows.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="480" Width="640" ScrollViewer.VerticalScrollBarVisibility="Disabled" WindowStyle="None" AllowsTransparency="True">
<Window.Effect>
<DropShadowEffect BlurRadius="15" Direction="-90" RenderingBias="Quality" ShadowDepth="2"/>
</Window.Effect>
<Grid>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,阴影不会出现.我能做什么,或者在哪里发生错误?
创建一个形状需要哪些步骤,例如使用Canvas从头开始带阴影的矩形?
在用于绘制矩形的绘制中添加阴影图层不会成功.
我想做一个圆圈UIImageView,它的工作原理.以下是我用它做的方式:
[self.pic.layer setMasksToBounds:YES];
[self.pic.layer setCornerRadius:50.0];
Run Code Online (Sandbox Code Playgroud)
我想补充一些阴影UIImageView.下面的代码确实为我的图像视图添加了一些阴影,但是,图像视图会变回方形.有人可以给我一些指针来解决这个问题吗?下面是我用来添加阴影的代码:
self.pic.layer.shadowColor = [UIColor purpleColor].CGColor;
self.pic.layer.shadowOffset = CGSizeMake(0, 1);
self.pic.layer.shadowOpacity = 1;
self.pic.layer.shadowRadius = 1.0;
self.pic.clipsToBounds = NO;
Run Code Online (Sandbox Code Playgroud) 我搜索并尝试了所有找到的解决方案.我需要从android中的按钮中删除阴影.我发现的大多数解决方案都涉及使用图像按钮并设置它的背景.我尝试了它并且它可以工作,但我的按钮有文本,所以imagebutton不是一个选项.除非有办法写入图像按钮?
我的第二个解决方案是
android:fadingEdgeLength="0dp"
Run Code Online (Sandbox Code Playgroud)
但似乎没有任何改变.第三:
android:shadowColor="@color/application_transparent" />
Run Code Online (Sandbox Code Playgroud)
这里没有任何改变.
我还尝试使用笔划0创建自定义形状并将按钮背景设置为它但仍然没有.我喜欢在我的Xml中而不是以编程方式执行此操作,但如果这是唯一的方法,那就这样吧.提前致谢
我有一个浮动动作按钮锚定在协调器布局的右下角.它距离视图的边距是16dp(默认情况下包含边距并在dimens.xml文件中指定),但它的阴影是剪切并且具有方形外观(见下文).当我从视图的边缘移动浮动操作按钮到32dp时,其阴影正确显示.
我已经尝试设置其高程属性(android:elevation="5dp"),但这似乎没有任何效果.我也尝试将borderWidth属性设置为0(app:borderWidth="0dp"),但也没有效果.
浮动动作按钮的行为是否有这样的原因?
XML
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<android.support.design.widget.FloatingActionButton
android:id="@+id/create_floating_action_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_create_white_48dp"
app:layout_anchor="@id/coordinator_layout"
app:layout_anchorGravity="bottom|right" />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
图片
我抬起头但是我找不到如何向UIView添加内部阴影,只为Swift添加顶部(从上到下).在Swift中添加内圈的最佳方法是什么?
编辑:我在SO上找到了一些问题和答案,但是他们要么是obj-c,要么看起来很复杂.如果有的话,我只是想找一个更加Swifty的方式
我想要实现的目标:
我试图创建一个ImageView圆角和阴影给它一些深度.我能够为它创建一个阴影UIImageView,但每当我添加代码也使它有圆角时,它只有圆角而没有阴影.我有一个IBOutlet名字myImage,它在viewDidLoad函数内部.有没有人对如何使其有效有任何想法?我究竟做错了什么?
override func viewDidLoad() {
super.ViewDidLoad()
myImage.layer.shadowColor = UIColor.black.cgColor
myImage.layer.shadowOpacity = 1
myImage.layer.shadowOffset = CGSize.zero
myImage.layer.shadowRadius = 10
myImage.layer.shadowPath = UIBezierPath(rect: myImage.bounds).cgPath
myImage.layer.shouldRasterize = false
myImage.layer.cornerRadius = 10
myImage.clipsToBounds = true
}
Run Code Online (Sandbox Code Playgroud) 我试着在Xamarin.Forms的图像视图上设置阴影(针对Android平台),我在互联网上有一些例子.
PCL代码非常简单,平台看起来也很简单.官方xamarin开发者网站提供的配方是这样的:
[assembly: ResolutionGroupName("MyGroupName")]
[assembly: ExportEffect(typeof(LabelShadowEffect), "ShadowEffect")]
namespace MyWorkspace
{
public class LabelShadowEffect : PlatformEffect
{
protected override void OnAttached()
{
try
{
var control = (Control as TextView); // TextView have the SetShadowLayer method, but others views don't
var effect = (ShadowEffect)Element.Effects.FirstOrDefault(e => e is ShadowEffect);
if (effect != null)
{
float radius = effect.Radius;
float distanceX = effect.DistanceX;
float distanceY = effect.DistanceY;
Android.Graphics.Color color = effect.Color.ToAndroid();
control?.SetShadowLayer(radius, distanceX, distanceY, color);
}
}
catch (Exception)
{
} …Run Code Online (Sandbox Code Playgroud)